From 6426ddc667a1600e8647c56b7176f8d596f9d6ca Mon Sep 17 00:00:00 2001 From: Anna Garcia Date: Thu, 29 Oct 2026 10:33:00 -0400 Subject: [PATCH 01/11] docs(replay): drop wireframe mode from mobile replay onboarding posthog-android 4.0 and posthog-ios 4.0 always record masked screenshots and remove `screenshot`, `screenshotMode` and `screenshotModeBackgroundCapture`. KMP removes `SessionRecordingConfig.screenshot` with them. Co-Authored-By: Claude Opus 5.5 --- docs/onboarding/session-replay/android.tsx | 9 ++++----- docs/onboarding/session-replay/ios.tsx | 19 +++++-------------- docs/onboarding/session-replay/kmp.tsx | 5 ----- 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/docs/onboarding/session-replay/android.tsx b/docs/onboarding/session-replay/android.tsx index 6eb0906433af..0f07ea3c800b 100644 --- a/docs/onboarding/session-replay/android.tsx +++ b/docs/onboarding/session-replay/android.tsx @@ -96,12 +96,11 @@ export const getAndroidSteps = (ctx: OnboardingComponentsContext): StepDefinitio // requires SDK version 3.32.0 or higher. config.sessionReplayConfig.captureLogcat = true - // Whether replays are created using high quality screenshots. Default is false. - // If disabled, replays are created using wireframes instead. - // The screenshot may contain sensitive information, so use with caution - config.sessionReplayConfig.screenshot = false + // Replays are recorded as masked screenshots, so mask anything sensitive. + // Before SDK version 4.0, also set config.sessionReplayConfig.screenshot = true, + // otherwise replays are recorded as wireframes. - // Experimental screenshot settings require SDK 3.63.0+ and screenshot = true. + // Experimental screenshot settings require SDK version 3.63.0 or higher. // We recommend the values below to balance performance and image quality. // Lower resolution and RGB_565 reduce capture time and memory use. diff --git a/docs/onboarding/session-replay/ios.tsx b/docs/onboarding/session-replay/ios.tsx index ed8ecd6be01d..f1c9ddf24de8 100644 --- a/docs/onboarding/session-replay/ios.tsx +++ b/docs/onboarding/session-replay/ios.tsx @@ -111,18 +111,9 @@ export const getIOSSteps = (ctx: OnboardingComponentsContext): StepDefinition[] // requires SDK version 3.41.1 or higher. config.sessionReplayConfig.captureNetworkTelemetry = true - // Whether replays are created using high quality screenshots. Default is false. - // Required for SwiftUI. - // If disabled, replays are created using wireframes instead. - // The screenshot may contain sensitive information, so use with caution - config.sessionReplayConfig.screenshotMode = true - - // Experimental. Only applies when \`screenshotMode\` is enabled. - // Moves screenshot rendering off the main thread, which reduces jank - // on high refresh rate (120Hz ProMotion) displays. May trigger Xcode's - // Main Thread Checker and briefly freeze the app on the first capture. - // Default is false. Requires SDK version 3.58.1 or higher. - config.sessionReplayConfig.screenshotModeBackgroundCapture = false + // Replays are recorded as masked screenshots, so mask anything sensitive. + // Before SDK version 4.0, also set config.sessionReplayConfig.screenshotMode = true, + // otherwise replays are recorded as wireframes and SwiftUI screens aren't recorded. // Minimum time (in seconds) between snapshots. Default is 1.0s. // Snapshots are taken when views lay out, so this caps how often one @@ -156,8 +147,8 @@ export const getIOSSteps = (ctx: OnboardingComponentsContext): StepDefinition[] - SwiftUI is only supported if the `screenshotMode` option is enabled. Custom views and - WebViews also require screenshot mode for full support. + SDK version 4.0 and later record SwiftUI, custom views and WebViews as screenshots. Earlier + versions only support them if the `screenshotMode` option is enabled. diff --git a/docs/onboarding/session-replay/kmp.tsx b/docs/onboarding/session-replay/kmp.tsx index 20783ebab357..69a0626f5906 100644 --- a/docs/onboarding/session-replay/kmp.tsx +++ b/docs/onboarding/session-replay/kmp.tsx @@ -97,11 +97,6 @@ export const getKMPSteps = (ctx: OnboardingComponentsContext): StepDefinition[] // Capture console and system logs (iOS and web). Default is false. captureLogs = false, - // Whether replays are created using high quality screenshots instead of - // wireframes (experimental, Android and iOS). Default is false. - // Screenshots may contain sensitive information, so use with caution. - screenshot = false, - // Capture Android logcat output (Android only). Default is true. captureLogcat = true, From cb0023edf70eb841fb3195f5f8ea3beb54e39b6f Mon Sep 17 00:00:00 2001 From: Anna Garcia Date: Wed, 4 Nov 2026 16:44:35 -0500 Subject: [PATCH 02/11] docs(replay): say android 4.0 records jetpack compose The requirements callout still said Compose needs `screenshot`, which 4.0 removes. Co-Authored-By: Claude Opus 5.5 --- docs/onboarding/session-replay/android.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/onboarding/session-replay/android.tsx b/docs/onboarding/session-replay/android.tsx index 0f07ea3c800b..1633a138207b 100644 --- a/docs/onboarding/session-replay/android.tsx +++ b/docs/onboarding/session-replay/android.tsx @@ -139,7 +139,8 @@ export const getAndroidSteps = (ctx: OnboardingComponentsContext): StepDefinitio - Requires Android API 26 or higher. Jetpack Compose is only supported if `screenshot` is + Requires Android API 26 or higher. SDK version 4.0 and later record Jetpack Compose screens + as screenshots. Earlier versions only support Jetpack Compose if the `screenshot` option is enabled. From d0d4b7f80f1903ede4c3907e8370ad5054144955 Mon Sep 17 00:00:00 2001 From: Anna Garcia Date: Thu, 5 Nov 2026 15:59:53 -0500 Subject: [PATCH 03/11] docs(replay): drop the debouncerDelay note from the iOS throttleDelay comment posthog-ios 4.0 removed `debouncerDelay`, so the "called debouncerDelay before 3.21.0" note no longer helps. Co-Authored-By: Claude Opus 5.5 --- docs/onboarding/session-replay/ios.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/onboarding/session-replay/ios.tsx b/docs/onboarding/session-replay/ios.tsx index f1c9ddf24de8..76d3a92eff4f 100644 --- a/docs/onboarding/session-replay/ios.tsx +++ b/docs/onboarding/session-replay/ios.tsx @@ -120,7 +120,6 @@ export const getIOSSteps = (ctx: OnboardingComponentsContext): StepDefinition[] // can be captured rather than setting a fixed frame rate. // Lower values can make playback smoother, at the cost of more // capture work on the device. - // Note: called \`debouncerDelay\` before version 3.21.0 config.sessionReplayConfig.throttleDelay = 1.0 // Sample rate for session recordings. A value between 0.0 and 1.0. From addc196f89bb5260572387db7ca2806c2a399f03 Mon Sep 17 00:00:00 2001 From: Anna Garcia Date: Thu, 5 Nov 2026 19:25:38 -0500 Subject: [PATCH 04/11] docs(replay): move android and ios replay changes to their 4.0 onboarding PRs --- docs/onboarding/session-replay/android.tsx | 12 ++++++------ docs/onboarding/session-replay/ios.tsx | 20 +++++++++++++++----- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/docs/onboarding/session-replay/android.tsx b/docs/onboarding/session-replay/android.tsx index 1633a138207b..6eb0906433af 100644 --- a/docs/onboarding/session-replay/android.tsx +++ b/docs/onboarding/session-replay/android.tsx @@ -96,11 +96,12 @@ export const getAndroidSteps = (ctx: OnboardingComponentsContext): StepDefinitio // requires SDK version 3.32.0 or higher. config.sessionReplayConfig.captureLogcat = true - // Replays are recorded as masked screenshots, so mask anything sensitive. - // Before SDK version 4.0, also set config.sessionReplayConfig.screenshot = true, - // otherwise replays are recorded as wireframes. + // Whether replays are created using high quality screenshots. Default is false. + // If disabled, replays are created using wireframes instead. + // The screenshot may contain sensitive information, so use with caution + config.sessionReplayConfig.screenshot = false - // Experimental screenshot settings require SDK version 3.63.0 or higher. + // Experimental screenshot settings require SDK 3.63.0+ and screenshot = true. // We recommend the values below to balance performance and image quality. // Lower resolution and RGB_565 reduce capture time and memory use. @@ -139,8 +140,7 @@ export const getAndroidSteps = (ctx: OnboardingComponentsContext): StepDefinitio - Requires Android API 26 or higher. SDK version 4.0 and later record Jetpack Compose screens - as screenshots. Earlier versions only support Jetpack Compose if the `screenshot` option is + Requires Android API 26 or higher. Jetpack Compose is only supported if `screenshot` is enabled. diff --git a/docs/onboarding/session-replay/ios.tsx b/docs/onboarding/session-replay/ios.tsx index 76d3a92eff4f..ed8ecd6be01d 100644 --- a/docs/onboarding/session-replay/ios.tsx +++ b/docs/onboarding/session-replay/ios.tsx @@ -111,15 +111,25 @@ export const getIOSSteps = (ctx: OnboardingComponentsContext): StepDefinition[] // requires SDK version 3.41.1 or higher. config.sessionReplayConfig.captureNetworkTelemetry = true - // Replays are recorded as masked screenshots, so mask anything sensitive. - // Before SDK version 4.0, also set config.sessionReplayConfig.screenshotMode = true, - // otherwise replays are recorded as wireframes and SwiftUI screens aren't recorded. + // Whether replays are created using high quality screenshots. Default is false. + // Required for SwiftUI. + // If disabled, replays are created using wireframes instead. + // The screenshot may contain sensitive information, so use with caution + config.sessionReplayConfig.screenshotMode = true + + // Experimental. Only applies when \`screenshotMode\` is enabled. + // Moves screenshot rendering off the main thread, which reduces jank + // on high refresh rate (120Hz ProMotion) displays. May trigger Xcode's + // Main Thread Checker and briefly freeze the app on the first capture. + // Default is false. Requires SDK version 3.58.1 or higher. + config.sessionReplayConfig.screenshotModeBackgroundCapture = false // Minimum time (in seconds) between snapshots. Default is 1.0s. // Snapshots are taken when views lay out, so this caps how often one // can be captured rather than setting a fixed frame rate. // Lower values can make playback smoother, at the cost of more // capture work on the device. + // Note: called \`debouncerDelay\` before version 3.21.0 config.sessionReplayConfig.throttleDelay = 1.0 // Sample rate for session recordings. A value between 0.0 and 1.0. @@ -146,8 +156,8 @@ export const getIOSSteps = (ctx: OnboardingComponentsContext): StepDefinition[] - SDK version 4.0 and later record SwiftUI, custom views and WebViews as screenshots. Earlier - versions only support them if the `screenshotMode` option is enabled. + SwiftUI is only supported if the `screenshotMode` option is enabled. Custom views and + WebViews also require screenshot mode for full support. From 352f0d83217327dee44622de5b5ca9eb42c70613 Mon Sep 17 00:00:00 2001 From: Anna Garcia Date: Sun, 8 Nov 2026 12:15:18 -0500 Subject: [PATCH 05/11] docs(onboarding): fix KMP and React Native replay requirements - Use `throttleDelayMs` instead of the deprecated `debouncerDelayMs` in the KMP snippet. - State React Native 0.75, iOS 15 and Xcode 26 for @posthog/react-native-plugin 3.0. - Remove unused `SDKInstallRNInstructions`, which still installed posthog-react-native-session-replay. --- docs/onboarding/session-replay/kmp.tsx | 4 +- .../session-replay/react-native.tsx | 5 +- .../sdks/sdk-install-instructions/index.tsx | 1 - .../sdk-install-instructions/react-native.tsx | 154 ------------------ 4 files changed, 5 insertions(+), 159 deletions(-) delete mode 100644 frontend/src/scenes/onboarding/sdks/sdk-install-instructions/react-native.tsx diff --git a/docs/onboarding/session-replay/kmp.tsx b/docs/onboarding/session-replay/kmp.tsx index 69a0626f5906..1ffc0a9a63b3 100644 --- a/docs/onboarding/session-replay/kmp.tsx +++ b/docs/onboarding/session-replay/kmp.tsx @@ -100,8 +100,8 @@ export const getKMPSteps = (ctx: OnboardingComponentsContext): StepDefinition[] // Capture Android logcat output (Android only). Default is true. captureLogcat = true, - // Touch event debounce delay in milliseconds (Android only). Default is 1000. - debouncerDelayMs = 1000L, + // Minimum delay in milliseconds between replay snapshots (Android and iOS). Default is 1000. + throttleDelayMs = 1000L, ), ) `, diff --git a/docs/onboarding/session-replay/react-native.tsx b/docs/onboarding/session-replay/react-native.tsx index c4b01acb3cab..55eaf8e6a995 100644 --- a/docs/onboarding/session-replay/react-native.tsx +++ b/docs/onboarding/session-replay/react-native.tsx @@ -170,8 +170,9 @@ export const getReactNativeSteps = (ctx: OnboardingComponentsContext): StepDefin - Requires Android API 26+ and iOS 13+. Expo Go is not supported - use a development build. - Session replay is only supported on Android and iOS platforms. + Requires React Native 0.75+, Android API 26+, iOS 15+, and Xcode 26+. Expo Go is not + supported - use a development build. Session replay is only supported on Android and iOS + platforms. diff --git a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/index.tsx b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/index.tsx index 45ffdf34a991..73891c9f62a1 100644 --- a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/index.tsx +++ b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/index.tsx @@ -14,7 +14,6 @@ export * from './nodejs' export * from './nuxt' export * from './php' export * from './python' -export * from './react-native' export * from './remix' export * from './ruby' export * from './svelte' diff --git a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/react-native.tsx b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/react-native.tsx deleted file mode 100644 index f71cd0e24a8d..000000000000 --- a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/react-native.tsx +++ /dev/null @@ -1,154 +0,0 @@ -import { useValues } from 'kea' - -import { Link } from '@posthog/lemon-ui' - -import { CodeSnippet, Language } from 'lib/components/CodeSnippet' -import { apiHostOrigin } from 'lib/utils/apiHost' -import SetupWizardBanner from 'scenes/onboarding/shared/SetupWizardBanner' -import { teamLogic } from 'scenes/teamLogic' - -export interface RNSetupProps { - hideWizard?: boolean - includeReplay?: boolean - includeSurveys?: boolean -} - -function RNInstallSnippet({ includeReplay, includeSurveys }: RNSetupProps): JSX.Element { - return ( - - {`# Expo apps -npx expo install posthog-react-native expo-file-system expo-application expo-device expo-localization${ - includeReplay ? ` posthog-react-native-session-replay` : '' - }${includeSurveys ? ` react-native-safe-area-context react-native-svg` : ''} - -# Standard React Native apps -yarn add posthog-react-native @react-native-async-storage/async-storage react-native-device-info react-native-localize${ - includeReplay ? ` posthog-react-native-session-replay` : '' - }${includeSurveys ? ` react-native-safe-area-context react-native-svg` : ''} -# or -npm i -s posthog-react-native @react-native-async-storage/async-storage react-native-device-info react-native-localize${ - includeReplay ? ` posthog-react-native-session-replay` : '' - }${includeSurveys ? ` react-native-safe-area-context react-native-svg` : ''} - -# for iOS -cd ios -pod install`} - - ) -} - -function RNSetupSnippet({ includeReplay }: RNSetupProps): JSX.Element { - const { currentTeam } = useValues(teamLogic) - const url = apiHostOrigin() - - return ( - <> -

- PostHog is most easily used via the PostHogProvider component but if you need to - instantiate it directly,{' '} - - check out the docs - {' '} - which explain how to do this correctly. -

- - {`// App.(js|ts) -import { PostHogProvider } from 'posthog-react-native' -... - -export function MyApp() { - return ( - - - - ) -}`} - - - ) -} - -function RNSetupSurveysProvider(): JSX.Element { - return ( - <> -

- Add PostHogSurveyProvider to your app anywhere inside PostHogProvider. This component fetches surveys. - It also acts as the root for where popover surveys are rendered. -

- - {` - {children} -`} - -

- If you're not using the PostHogProvider, add PostHogSurveyProvider to your app anywhere inside your app - root component. -

- - {` - {children} -`} - -

You can also pass your client instance to the PostHogSurveyProvider.

- {`{children}`} - - ) -} - -export function SDKInstallRNInstructions(props: RNSetupProps): JSX.Element { - return ( - <> - -

Install

- -

Configure

- - {props.includeSurveys && ( - <> -

Setup SurveysProvider

- - - )} - - ) -} From 9f862031417dc90c7f51a47489533cf588c1e457 Mon Sep 17 00:00:00 2001 From: Anna Garcia Date: Tue, 10 Nov 2026 12:01:58 -0500 Subject: [PATCH 06/11] docs(onboarding): warn against installing the replay package with plugin 3.0 Claude-Session: https://claude.ai/code/session_019xLynttdFZAHfqTem5BhPQ --- docs/onboarding/session-replay/react-native.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/onboarding/session-replay/react-native.tsx b/docs/onboarding/session-replay/react-native.tsx index 55eaf8e6a995..e14c4949c078 100644 --- a/docs/onboarding/session-replay/react-native.tsx +++ b/docs/onboarding/session-replay/react-native.tsx @@ -49,7 +49,7 @@ export const getReactNativeSteps = (ctx: OnboardingComponentsContext): StepDefin {dedent` - \`@posthog/react-native-plugin\` (\`>= 2.0.1\`) is the renamed \`posthog-react-native-session-replay\` plugin — it was renamed in \`posthog-react-native\` 4.47.0+ and now also powers [native error tracking](https://posthog.com/docs/error-tracking/installation/react-native). If you're on a \`posthog-react-native\` version earlier than 4.47.0, install \`posthog-react-native-session-replay\` instead. + \`@posthog/react-native-plugin\` (\`>= 2.0.1\`) is the renamed \`posthog-react-native-session-replay\` plugin — it was renamed in \`posthog-react-native\` 4.47.0+ and now also powers [native error tracking](https://posthog.com/docs/error-tracking/installation/react-native). If you're on a \`posthog-react-native\` version earlier than 4.47.0, install \`posthog-react-native-session-replay\` instead. Don't install it alongside \`@posthog/react-native-plugin\` 3.0: its pod still installs \`posthog-ios\` 3.x, and the Xcode build fails with \`Redefinition of module 'PostHog'\`. `} From 5ee41e15c9821369eac0a9c457aaaea6a74c30c9 Mon Sep 17 00:00:00 2001 From: Anna Garcia Date: Tue, 10 Nov 2026 14:52:39 -0500 Subject: [PATCH 07/11] docs(react-native): replace an em dash in the plugin rename callout --- docs/onboarding/session-replay/react-native.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/onboarding/session-replay/react-native.tsx b/docs/onboarding/session-replay/react-native.tsx index e14c4949c078..6b085432c746 100644 --- a/docs/onboarding/session-replay/react-native.tsx +++ b/docs/onboarding/session-replay/react-native.tsx @@ -49,7 +49,7 @@ export const getReactNativeSteps = (ctx: OnboardingComponentsContext): StepDefin {dedent` - \`@posthog/react-native-plugin\` (\`>= 2.0.1\`) is the renamed \`posthog-react-native-session-replay\` plugin — it was renamed in \`posthog-react-native\` 4.47.0+ and now also powers [native error tracking](https://posthog.com/docs/error-tracking/installation/react-native). If you're on a \`posthog-react-native\` version earlier than 4.47.0, install \`posthog-react-native-session-replay\` instead. Don't install it alongside \`@posthog/react-native-plugin\` 3.0: its pod still installs \`posthog-ios\` 3.x, and the Xcode build fails with \`Redefinition of module 'PostHog'\`. + \`@posthog/react-native-plugin\` (\`>= 2.0.1\`) is the renamed \`posthog-react-native-session-replay\` plugin. It was renamed in \`posthog-react-native\` 4.47.0+ and now also powers [native error tracking](https://posthog.com/docs/error-tracking/installation/react-native). If you're on a \`posthog-react-native\` version earlier than 4.47.0, install \`posthog-react-native-session-replay\` instead. Don't install it alongside \`@posthog/react-native-plugin\` 3.0: its pod still installs \`posthog-ios\` 3.x, and the Xcode build fails with \`Redefinition of module 'PostHog'\`. `} From 7135fcee247f04d7901821d1887244093c78c284 Mon Sep 17 00:00:00 2001 From: Anna Garcia Date: Tue, 10 Nov 2026 14:52:45 -0500 Subject: [PATCH 08/11] docs(react-native): note the Kotlin 2.0 requirement on React Native 0.75 and 0.76 --- docs/onboarding/session-replay/react-native.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/onboarding/session-replay/react-native.tsx b/docs/onboarding/session-replay/react-native.tsx index 6b085432c746..d60bae52b3aa 100644 --- a/docs/onboarding/session-replay/react-native.tsx +++ b/docs/onboarding/session-replay/react-native.tsx @@ -170,8 +170,9 @@ export const getReactNativeSteps = (ctx: OnboardingComponentsContext): StepDefin - Requires React Native 0.75+, Android API 26+, iOS 15+, and Xcode 26+. Expo Go is not - supported - use a development build. Session replay is only supported on Android and iOS + Requires React Native 0.75+, Android API 26+, iOS 15+, and Xcode 26+. On React Native 0.75 + and 0.76, including Expo SDK 52, Android builds also need Kotlin 2.0 or later. Expo Go is + not supported - use a development build. Session replay is only supported on Android and iOS platforms. From 80d338a882653260404853c48a73f8b8a68800b5 Mon Sep 17 00:00:00 2001 From: "Vincent (Wen Yu) Ge" Date: Tue, 10 Nov 2026 19:45:08 -0500 Subject: [PATCH 09/11] chore(onboarding): pin @posthog/react-native-plugin to 3 The React Native onboarding pinned the plugin to its current major, 2. This PR documents plugin 3.0, so its installs move to @3. Plugin 3.0 still works with posthog-react-native 4. Co-Authored-By: Claude Opus 5.5 --- docs/onboarding/error-tracking/react-native.tsx | 2 +- docs/onboarding/session-replay/react-native.tsx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/onboarding/error-tracking/react-native.tsx b/docs/onboarding/error-tracking/react-native.tsx index 6951b1ee20ba..02e81cac1d00 100644 --- a/docs/onboarding/error-tracking/react-native.tsx +++ b/docs/onboarding/error-tracking/react-native.tsx @@ -64,7 +64,7 @@ export const getReactNativeSteps = (ctx: OnboardingComponentsContext): StepDefin {dedent` \`nativeCrashes\` captures native iOS and Android crashes that the JavaScript layer can't see. Beyond the config above, it needs: - 1. The optional native plugin installed — \`npx expo install @posthog/react-native-plugin@2\` (Expo) or \`npm i @posthog/react-native-plugin@2\` (bare React Native). If it's missing, native capture is a no-op and your JS-level autocapture is unaffected. + 1. The optional native plugin installed — \`npx expo install @posthog/react-native-plugin@3\` (Expo) or \`npm i @posthog/react-native-plugin@3\` (bare React Native). If it's missing, native capture is a no-op and your JS-level autocapture is unaffected. 2. Your project's **Enable exception autocapture** setting enabled in [error tracking settings](https://app.posthog.com/settings/project-error-tracking#exception-autocapture) — the same server-side setting that gates JavaScript autocapture. 3. Native debug symbols uploaded at build time, so crash stack traces are readable. See [native crash symbolication](https://posthog.com/docs/error-tracking/upload-source-maps/react-native#native-crash-symbolication). `} diff --git a/docs/onboarding/session-replay/react-native.tsx b/docs/onboarding/session-replay/react-native.tsx index 9db92a4b8846..adece72745af 100644 --- a/docs/onboarding/session-replay/react-native.tsx +++ b/docs/onboarding/session-replay/react-native.tsx @@ -21,14 +21,14 @@ export const getReactNativeSteps = (ctx: OnboardingComponentsContext): StepDefin language: 'bash', file: 'Expo', code: dedent` - npx expo install posthog-react-native@4 expo-file-system expo-application expo-device expo-localization @posthog/react-native-plugin@2 + npx expo install posthog-react-native@4 expo-file-system expo-application expo-device expo-localization @posthog/react-native-plugin@3 `, }, { language: 'bash', file: 'yarn', code: dedent` - yarn add posthog-react-native@4 @react-native-async-storage/async-storage react-native-device-info react-native-localize @posthog/react-native-plugin@2 + yarn add posthog-react-native@4 @react-native-async-storage/async-storage react-native-device-info react-native-localize @posthog/react-native-plugin@3 # for iOS cd ios && pod install @@ -38,7 +38,7 @@ export const getReactNativeSteps = (ctx: OnboardingComponentsContext): StepDefin language: 'bash', file: 'npm', code: dedent` - npm i -s posthog-react-native@4 @react-native-async-storage/async-storage react-native-device-info react-native-localize @posthog/react-native-plugin@2 + npm i -s posthog-react-native@4 @react-native-async-storage/async-storage react-native-device-info react-native-localize @posthog/react-native-plugin@3 # for iOS cd ios && pod install From e0f7942dc49a64acbd6bf5cd206104c333afba74 Mon Sep 17 00:00:00 2001 From: Anna Garcia Date: Thu, 12 Nov 2026 11:16:49 -0500 Subject: [PATCH 10/11] docs(replay): require posthog-kmp 0.11.0 for the KMP replay setup The sample uses throttleDelayMs, which only exists from 0.11.0. Co-Authored-By: Claude Opus 5.5 --- docs/onboarding/session-replay/kmp.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/onboarding/session-replay/kmp.tsx b/docs/onboarding/session-replay/kmp.tsx index 015fcc1653de..f81f306cde3d 100644 --- a/docs/onboarding/session-replay/kmp.tsx +++ b/docs/onboarding/session-replay/kmp.tsx @@ -34,7 +34,7 @@ export const getKMPSteps = (ctx: OnboardingComponentsContext): StepDefinition[] `0.+` resolves to the latest `0.x` release. The SDK is a pre-release, so the API can change between minor versions – pin an exact version from [Maven Central](https://central.sonatype.com/artifact/com.posthog/posthog-kmp) if you would rather - upgrade deliberately. The setup below requires `0.8.0` or higher. + upgrade deliberately. The setup below requires `0.11.0` or higher. From bf0281d546b462e617fbbcaab6a40338ba46bdd1 Mon Sep 17 00:00:00 2001 From: Anna Garcia Date: Thu, 12 Nov 2026 15:54:11 -0500 Subject: [PATCH 11/11] docs(replay): note macOS ignores KMP replay and add the RN 3.0 crash requirements - KMP replay onboarding: replay is ignored on macOS as well as the JVM, and the sample lists verifyScreenshotMaskAlignment, so it shows every option. - React Native error tracking: the native crash step states plugin 3.0's React Native 0.75+, iOS 15+ and Xcode 26+ requirements. Co-Authored-By: Claude Opus 5.5 --- docs/onboarding/error-tracking/react-native.tsx | 2 +- docs/onboarding/session-replay/kmp.tsx | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/onboarding/error-tracking/react-native.tsx b/docs/onboarding/error-tracking/react-native.tsx index 02e81cac1d00..cbce3714adcc 100644 --- a/docs/onboarding/error-tracking/react-native.tsx +++ b/docs/onboarding/error-tracking/react-native.tsx @@ -64,7 +64,7 @@ export const getReactNativeSteps = (ctx: OnboardingComponentsContext): StepDefin {dedent` \`nativeCrashes\` captures native iOS and Android crashes that the JavaScript layer can't see. Beyond the config above, it needs: - 1. The optional native plugin installed — \`npx expo install @posthog/react-native-plugin@3\` (Expo) or \`npm i @posthog/react-native-plugin@3\` (bare React Native). If it's missing, native capture is a no-op and your JS-level autocapture is unaffected. + 1. The optional native plugin installed — \`npx expo install @posthog/react-native-plugin@3\` (Expo) or \`npm i @posthog/react-native-plugin@3\` (bare React Native). Plugin 3.0 requires React Native 0.75+, iOS 15+, and Xcode 26+. If it's missing, native capture is a no-op and your JS-level autocapture is unaffected. 2. Your project's **Enable exception autocapture** setting enabled in [error tracking settings](https://app.posthog.com/settings/project-error-tracking#exception-autocapture) — the same server-side setting that gates JavaScript autocapture. 3. Native debug symbols uploaded at build time, so crash stack traces are readable. See [native crash symbolication](https://posthog.com/docs/error-tracking/upload-source-maps/react-native#native-crash-symbolication). `} diff --git a/docs/onboarding/session-replay/kmp.tsx b/docs/onboarding/session-replay/kmp.tsx index f81f306cde3d..b1f5c5cbc1ee 100644 --- a/docs/onboarding/session-replay/kmp.tsx +++ b/docs/onboarding/session-replay/kmp.tsx @@ -39,7 +39,7 @@ export const getKMPSteps = (ctx: OnboardingComponentsContext): StepDefinition[] Session replay is captured on Android, iOS and the web. It is ignored on the JVM (desktop) - target. + and macOS targets. @@ -102,6 +102,9 @@ export const getKMPSteps = (ctx: OnboardingComponentsContext): StepDefinition[] // Minimum delay in milliseconds between replay snapshots (Android and iOS). Default is 1000. throttleDelayMs = 1000L, + + // Experimental: verify screenshot mask alignment before keeping a capture (Android only). Default is false. + verifyScreenshotMaskAlignment = false, ), ) `,