Skip to content

docs(push): release-dependent push open updates - #20102

Closed
turnipdabeets wants to merge 1 commit into
masterfrom
docs/rn-push-warm-start
Closed

docs(push): release-dependent push open updates#20102
turnipdabeets wants to merge 1 commit into
masterfrom
docs/rn-push-warm-start

Conversation

@turnipdabeets

@turnipdabeets turnipdabeets commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Changes

Draft: every remaining item here waits on an SDK release. Do not merge before the release it names is published, since posthog.com deploys on merge.

The corrections that are true today, independent of any pending release, moved to #20114 (ready for review): the React Native iOS cold-launch gap, the iOS 14 floor on all three iOS surfaces, the Android warm-start coverage plus the killed-process gap, the notification-delegate callout, the missing React Native troubleshooting row, and the stale posthog-android 3.62.0 floor on the Flutter page.

What is left on this branch:

react-native.mdx – "Capturing opens"

Replaces "Only call it for opens automatic capture can't see itself, or the tap is counted twice" with an explicit "don't wire this to messaging().onNotificationOpenedApp / getInitialNotification()" warning, and tells anyone who followed the old advice to remove their handler.

This branch is based on master before #20114, so it still carries the snippet swap #20114 also makes. Rebase it once #20114 lands and the hunk reduces to the wording change.

Still to write here, and what each waits on

Page / claim Change to make Waits on
android.mdx: "PostHog.capturePushNotificationOpened below isn't deduplicated." A repeat of a PostHog push (same invocation_id / action_id) within 5 minutes is skipped, first report wins. Pushes with no PostHog payload are still never deduplicated. posthog-android 3.65.0 (PostHog/posthog-android#783). main already released 3.64.0 with an unrelated minor, so #783 ships as 3.65.0, not 3.64.0.
react-native.mdx: the "isn't deduplicated" wording on this branch Same first-report-wins rule, once the plugin pins a native version that has it. An @posthog/react-native-plugin release bumping both pins: com.posthog:posthog-android 3.63.1 → 3.65.0 (PostHog/posthog-js#4919) and posthog_ios_version 3.73.3 → 3.75.0.
flutter.mdx: "the manual call isn't deduplicated against them, so the open is counted twice." Same first-report-wins rule. A posthog_flutter release whose floors clear both fixes. 5.41.0 declares posthog-android [3.64.0,4.0.0) and PostHog >= 3.74.0, so it would resolve the fixes but does not require them – PostHog/posthog-flutter#578 raises the floors.
react-native.mdx: iOS open coverage A tap that cold-launches the app is captured (with the plugin version named, and the iOS 14 qualifier #20114 adds). An @posthog/react-native-plugin release with PostHog/posthog-js#4921. main has no prewarmPushNotificationOpenCapture() call today.
react-native.mdx: "Opting out" The one that turns actively wrong, not just stale. After #4921 the iOS launch hook runs before any JS, so capturePushNotificationOpened: false alone no longer disables it; com.posthog.posthog.CAPTURE_PUSH_NOTIFICATION_OPENED = false in Info.plist (Expo: ios.infoPlist) is also required. An @posthog/react-native-plugin release with PostHog/posthog-js#4921.
ios.mdx troubleshooting: "In a cross-platform host … call PostHogSDK.prewarmPushNotificationOpenCapture() … The PostHog Flutter plugin already does this for you." Add the React Native plugin to the list of hosts that already do it, so a JavaScript host doesn't wire up something it already has. An @posthog/react-native-plugin release with PostHog/posthog-js#4921.
react-native.mdx: killed-process guidance The Expo config plugin patches MainActivity by default, patchMainActivityNewIntent: false opts out, and a bare React Native app that never runs expo prebuild must add setIntent(intent) before super.onNewIntent(intent) by hand. #20114 documents the gap; this documents the fix. posthog-react-native / the plugin with PostHog/posthog-js#4929 (draft).
ios.mdx: "Capturing opens" Optional parity note: state the same first-report-wins skip once iOS has it. Nothing on the page is false without it. posthog-ios 3.75.0 (PostHog/posthog-ios#828, draft).

Checklist

  • I've read the docs and/or content style guides.
  • Words are spelled using American English
  • Use relative URLs for internal links
  • I've checked the pages added or changed in the Vercel preview build
  • If I moved a page, I added a redirect in vercel.json (no pages moved)

Related PRs

One push-open capture effort across the mobile SDKs: count every notification tap exactly once, and stop losing taps the SDK starts too late to see.

PR What it does Blocked by
PostHog/posthog-android#783 Core: capture each PostHog push open once, whichever path reports it (ships as 3.65.0)
PostHog/posthog-ios#828 Same rule on iOS, so both platforms behave identically (ships as 3.75.0)
PostHog/posthog-js#4921 React Native on iOS: capture a tap that launches the app
PostHog/posthog-js#4929 React Native on Android: capture a tap lost when the process was killed but the task stayed in recents
PostHog/posthog-flutter#579 Flutter: replay a tap that arrives before the SDK is set up, instead of relying on firebase_messaging
PostHog/posthog-js#4919 React Native plugin: take the core dedupe, drop the plugin-level copy posthog-android 3.65.0
PostHog/posthog-flutter#578 Flutter plugin: take the core dedupe, drop the plugin-level copy posthog-android 3.65.0
#20114 Docs corrections that are wrong today, independent of any release
#20102 (this PR) Docs for the release-dependent behavior changes the SDK releases above

Merge order: posthog-android#783 and posthog-ios#828 first, then their releases. #4921, #4929 and #579 are independent and can go any time. #4919 and #578 go green once posthog-android 3.65.0 is published. Docs: #20114 can go now; #20102 last, after the releases.

Earlier work this builds on: PostHog/posthog-android#753, PostHog/posthog-ios#792, PostHog/posthog-js#4858, PostHog/posthog-flutter#556, PostHog/posthog-flutter#557, #19905.

@github-actions github-actions Bot added docs Improvements or additions to product documentation, "Docs" content PR only touches files under contents/ labels Sep 11, 2026
@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Deploy preview

Status Details Updated (UTC)
🟢 Ready View preview Sep 12, 2026 04:22PM

Changed pages

Page Source
React Native push notifications contents/docs/workflows/push-notifications/react-native.mdx

@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Vale prose linter → found 0 errors, 9 warnings, 3 suggestions in your markdown

Full report → Copy the linter results into an LLM to batch-fix issues.

Linter being weird? Update the rules!

contents/docs/workflows/push-notifications/react-native.mdx — 0 errors, 9 warnings, 3 suggestions
Line Severity Message Rule
12:132 suggestion Address the reader directly. Use 'you' instead of 'the user'. PostHogDocs.DirectAddress
32:110 warning 'APNs' is a possible misspelling. PostHogBase.Spelling
32:252 warning 'classpath' is a possible misspelling. PostHogBase.Spelling
32:382 suggestion Address the reader directly. Use 'you' instead of 'the user'. PostHogDocs.DirectAddress
59:54 warning 'APNs' is a possible misspelling. PostHogBase.Spelling
59:83 warning Use 'ID' instead of 'id'. Vale.Terms
61:1 warning 'Unregister' is a possible misspelling. PostHogBase.Spelling
69:18 warning 'unregistration' is a possible misspelling. PostHogBase.Spelling
116:112 suggestion Address the reader directly. Use 'you' instead of 'the user'. PostHogDocs.DirectAddress
116:203 warning 'classpath' is a possible misspelling. PostHogBase.Spelling
117:77 warning 'APNs' is a possible misspelling. PostHogBase.Spelling
117:105 warning Use 'ID' instead of 'id'. Vale.Terms

@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Bundle report

Total JS (gzip)

8.78 MiB (+0.4 KiB / +0.0%)

Eager graph (modules shipped in each entrypoint's initial chunks)

Entrypoint Eager size Budget Modules
app 18.52 MiB (+3.2 KiB / +0.0%) report-only 2062
Largest modules in the app closure
Module Size
./src/data/mcp-tools.json 1131.9 KiB
css ./node_modules/.pnpm/css-loader@5.2.7_webpack@5.101.3/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[8].oneOf[1].use[1]!./node_modules/.pnpm/postcss-loader@4.3.0_postcss@8.5.6_webpack@5.101.3/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[8].oneOf[1].use[2]!./src/styles/global.css 773.9 KiB
./src/components/Stickers/Stickers.tsx 696.4 KiB
./node_modules/.pnpm/@radix-ui+react-icons@1.3.2_react@18.3.1/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js 481.4 KiB
./node_modules/.pnpm/@posthog+brand@0.8.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/x-ray.mjs 480.8 KiB
./node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.js + 29 modules 395.1 KiB
./node_modules/.pnpm/@posthog+brand@0.8.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/im-the-driver.mjs 385.7 KiB
./src/hooks/useCustomers.tsx + 55 modules 370.0 KiB
./node_modules/.pnpm/@posthog+icons@0.36.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js 354.8 KiB
./node_modules/.pnpm/react-markdown@8.0.7_@types+react@16.14.66_react@18.3.1/node_modules/react-markdown/lib/react-markdown.js + 88 modules 351.4 KiB
./src/components/ProductComparisonTable/index.tsx + 126 modules 305.7 KiB
./node_modules/.pnpm/cloudinary-core@2.14.0_lodash@4.17.21/node_modules/cloudinary-core/cloudinary-core.js 281.9 KiB
./node_modules/.pnpm/@posthog+brand@0.8.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/doll-house.mjs 281.7 KiB
./node_modules/.pnpm/@posthog+brand@0.8.0_react@18.3.1/node_modules/@posthog/brand/dist/generated/hoggies/svg/director.mjs 275.6 KiB
./src/components/SearchUI/index.tsx + 87 modules 273.7 KiB

Eager-graph budgets are report-only until a baseline is established. Sizes are gzip of public/**/*.js; eager size is webpack module source bytes for the modules actually shipped in the entrypoint's initial chunks (post-tree-shake).

Release-dependent half of the push open docs update. The corrections that
are true today moved to #20114.
@turnipdabeets
turnipdabeets force-pushed the docs/rn-push-warm-start branch from 19a1c55 to 694ea2f Compare September 12, 2026 16:08
@turnipdabeets turnipdabeets changed the title docs: update push open tracking for RN Android warm start and Flutter 5.40.0 docs(push): release-dependent push open updates Sep 12, 2026
@turnipdabeets

Copy link
Copy Markdown
Contributor Author

Consolidated into #20114, which now carries every push notification docs change for this effort (this PR's dedupe wording included) and stays a draft until the SDK releases are out.

@github-project-automation github-project-automation Bot moved this from Backlog to Done in PostHog.com planning Sep 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

content PR only touches files under contents/ docs Improvements or additions to product documentation, "Docs"

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant