Skip to content

feat(react-native): add setAppLanguage() for $app_language - #5601

Open
turnipdabeets wants to merge 6 commits into
mainfrom
feat/rn-set-app-language
Open

turnipdabeets wants to merge 6 commits into
mainfrom
feat/rn-set-app-language

Conversation

@turnipdabeets

@turnipdabeets turnipdabeets commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Problem

React Native events send no $app_language, and there's no way to set it. posthog-ios, posthog-android and posthog-flutter all have setAppLanguage(). RN apps usually translate in JavaScript (i18next and similar), so the SDK can't detect the language on screen; the app has to tell us.

The app tells us the language it displays, usually from its i18n library:

// With i18next or react-i18next
posthog.setAppLanguage(i18n.resolvedLanguage)
i18n.on('languageChanged', (language) => posthog.setAppLanguage(language))

// Your own language setting
posthog.setAppLanguage(settings.language) // at startup
posthog.setAppLanguage('de') // when the user picks German

Changes

  • Add setAppLanguage(language: string | null) to the RN client, matching the native SDKs: trims, replaces _ with -, blank or null clears it, kept in memory only, survives reset(). A register()ed, registerForSession()ed or per-event $app_language wins over it, like on iOS/Android. Without a call, events carry no $app_language (unchanged).
  • Forward the value to @posthog/react-native-plugin so native events (crashes, push opens) agree. Changes go through the existing ordered native command queue. The current value (or null) also goes in the native setup() options, which the plugin applies before setup, so the push open that cold-launches the app carries it and a value an earlier client left is cleared.
  • Compatibility:
    • Plugin 2.x or the legacy session-replay plugin don't have the method, so the call is optional (plugin.setAppLanguage?.()); JS events are still stamped. Covered by a test. They ignore the extra appLanguage setup option.
    • No compile-time dependency on the new plugin API: the method is declared on PostHogReactNativePluginExtended as optional, so this ships from main independently of the plugin PR.
    • Multi-client (fix(react-native): keep native session on one client when several exist #5347): the forward only runs for a client whose native plugin is initialized, so a client for another project doesn't change the native SDK's language. Its own JS events are still stamped. Covered by a test.
  • Regenerated references/posthog-react-native-references-latest.json.

Native side (turns off native detection, adds the bridge method): #5602 against chore/rn-plugin-v3.

Release info Sub-libraries affected

Libraries affected

  • All of them
  • posthog-js (web)
  • posthog-js-lite (web lite)
  • posthog-node
  • posthog-react-native
  • @posthog/react-native-plugin
  • @posthog/react
  • @posthog/ai
  • @posthog/convex
  • @posthog/next
  • @posthog/nextjs-config
  • @posthog/nuxt
  • @posthog/openfeature-node-provider
  • @posthog/openfeature-web-provider
  • @posthog/rollup-plugin
  • @posthog/webpack-plugin
  • @posthog/types
  • @posthog/browser-common

Checklist

  • All commits are signed (see Commit signing)
  • Tests for new code
  • Accounted for the impact of any changes across different platforms
  • Accounted for backwards compatibility of any changes (no breaking changes!)
  • Took care not to unnecessarily increase the bundle size

If releasing new changes

  • Ran pnpm changeset to generate a changeset file

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

  • Built with Claude Code, modelled on posthog-flutter's setAppLanguage (feat!: report the device language as $locale and add $app_language posthog-flutter#699) and the native setAppLanguage in posthog-ios / posthog-android 4.0.
  • Tests: test/app-language.spec.ts (normalization, clear, survives reset(), register() and registerForSession() win, sent in the native setup options including null, cross-project isolation, plugin without the method). Mutation-checked: dropping the register() or registerForSession() check each fail a test. Full RN suite, lint and check-types pass.
  • Not tested on a device.

🤖 Generated with Claude Code

Stamp the language the app displays on JS events and forward it to
@posthog/react-native-plugin when the method exists, so native events agree.
@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

Coherence

📄 0 spec file errors · ⛔ 0 broken rules · 🚪 2 unchecked inputs · 🐛 0 bugs that came back

What is Coherence?

Coherence compares the code with its spec files (*.spec.md). A spec file lists the rules for one part of the code.

This check read 44 parts of the code and 7 rules.

Note

These findings do not make this check fail.

None of these findings are in files that this pull request changes. You do not need to fix them in this pull request.

🚪 Unchecked inputs (2)

  • public api in packages/web/Web.spec.md. The input comes from: host-app.
  • webpack plugin in packages/webpack-plugin/Webpack-plugin.spec.md. The input comes from: build.
What this means and how to fix it

Input from outside this code comes in at these places. The spec does not say what checks that input. 10 more places were already like this when Coherence was added. This list does not show them.

To close one of these, find the place by its name in the ## entrances section of its spec file. Add one line under it:

  • If all of the input goes through one function that a rule in the spec protects, add guard: <function>.
  • If a rule in the spec already checks input from the same source, add the place's name to the entrances: line of that rule.
  • If the input needs no check, add control: none - <reason>.

To get the line to add, run npx --no -- coherence scaffold control "<name>".

@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

SDK performance: posthog-node

Benchmarks completed. No changes flagged for review.

Flags require at least a 5% change in the median and all six pairs agreeing on direction. This is a noise filter, not proof of a performance change or a CI gate.

View all results
Test Measurement Before PR With PR Change Assessment
Capture and deliver events (32-byte payload, burst)
Shard: capture
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Capture and deliver events (32-byte payload, steady)
Shard: capture
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Queue an event (32-byte payload)
Shard: capture
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Queue an event (4,096-byte payload)
Shard: capture
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate all 10 flags
Shard: flags-scaling
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate all 100 flags
Shard: flags-scaling
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate all 1,000 flags
Shard: flags-scaling
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate one boolean flag
Shard: flags-single
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate a cohort-filtered flag
Shard: flags-single
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate a flag (early match)
Shard: flags-single
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate a flag (late match)
Shard: flags-single
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate a flag (no match)
Shard: flags-single
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate a property-filtered flag
Shard: flags-single
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate a regex-filtered flag
Shard: flags-single
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate a rollout flag
Shard: flags-single
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Evaluate a multivariate flag
Shard: flags-single
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ V8 samples do not expose total allocation count; sample count is not object count.​; head:​ V8 samples do not expose total allocation count; sample count is not object count.​
Capture and deliver events (32-byte payload, burst)
Shard: capture
Allocated memory per operation (estimated) 9.72 KiB/op 10.2 KiB/op 5% more memory Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Time per operation 17.29 µs/op 16.52 µs/op 4.4% less time Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Idle process memory (RSS) 102.74 MiB 102.72 MiB <0.1% less memory Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Observed peak process memory (RSS) 106.05 MiB 106.12 MiB <0.1% more memory Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Managed heap after settling 9.97 MiB 9.97 MiB <0.1% less memory Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Process memory after settling (RSS) 105.83 MiB 105.82 MiB <0.1% less memory Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Process CPU time per operation 30.42 µs/op 28.52 µs/op 6.2% less time Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Lifetime peak process memory (RSS) 106.31 MiB 106.32 MiB <0.1% more memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Allocated memory per operation (estimated) 17.84 KiB/op 17.94 KiB/op 0.6% more memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Time per operation 29.71 µs/op 29.51 µs/op 0.7% less time Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Idle process memory (RSS) 103.24 MiB 103.23 MiB <0.1% less memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Observed peak process memory (RSS) 113.73 MiB 113.7 MiB <0.1% less memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Managed heap after settling 9.98 MiB 9.98 MiB <0.1% less memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Process memory after settling (RSS) 109.71 MiB 109.58 MiB 0.1% less memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Process CPU time per operation 42.65 µs/op 42.06 µs/op 1.4% less time Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Lifetime peak process memory (RSS) 116.46 MiB 116.39 MiB <0.1% less memory Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Allocated memory per operation (estimated) 10.06 KiB/op 10.73 KiB/op 6.7% more memory Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Time per operation 17.45 µs/op 17.68 µs/op 1.3% more time Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Idle process memory (RSS) 102.34 MiB 102.51 MiB 0.2% more memory Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Observed peak process memory (RSS) 106.5 MiB 106.42 MiB <0.1% less memory Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Managed heap after settling 10.05 MiB 10.05 MiB <0.1% less memory Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Process memory after settling (RSS) 106.5 MiB 106.34 MiB 0.2% less memory Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Process CPU time per operation 30.01 µs/op 30.16 µs/op 0.5% more time Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Lifetime peak process memory (RSS) 106.91 MiB 106.84 MiB <0.1% less memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Allocated memory per operation (estimated) 17.85 KiB/op 17.76 KiB/op 0.5% less memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Time per operation 25.65 µs/op 25.36 µs/op 1.1% less time Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Idle process memory (RSS) 102.9 MiB 102.71 MiB 0.2% less memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Observed peak process memory (RSS) 109.47 MiB 109.51 MiB <0.1% more memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Managed heap after settling 10.06 MiB 10.05 MiB <0.1% less memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Process memory after settling (RSS) 108.12 MiB 108.33 MiB 0.2% more memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Process CPU time per operation 39.04 µs/op 38.44 µs/op 1.5% less time Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Lifetime peak process memory (RSS) 109.47 MiB 109.54 MiB <0.1% more memory Not flagged
Queue an event (32-byte payload)
Shard: capture
Allocated memory per operation (estimated) 8.83 KiB/op 9.13 KiB/op 3.4% more memory Not flagged
Queue an event (32-byte payload)
Shard: capture
Time per operation 11.87 µs/op 11.63 µs/op 2.1% less time Not flagged
Queue an event (32-byte payload)
Shard: capture
Process CPU time per operation 22.71 µs/op 22.78 µs/op 0.3% more time Not flagged
Queue an event (4,096-byte payload)
Shard: capture
Allocated memory per operation (estimated) 8.64 KiB/op 8.35 KiB/op 3.4% less memory Not flagged
Queue an event (4,096-byte payload)
Shard: capture
Time per operation 12.4 µs/op 11.55 µs/op 6.8% less time Not flagged
Queue an event (4,096-byte payload)
Shard: capture
Process CPU time per operation 24.5 µs/op 21.89 µs/op 10.7% less time Not flagged
Evaluate all 10 flags
Shard: flags-scaling
Allocated memory per operation (estimated) 132.98 KiB/op 131.88 KiB/op 0.8% less memory Not flagged
Evaluate all 10 flags
Shard: flags-scaling
Time per operation 148.69 µs/op 148.08 µs/op 0.4% less time Not flagged
Evaluate all 10 flags
Shard: flags-scaling
Process CPU time per operation 264.54 µs/op 262.95 µs/op 0.6% less time Not flagged
Evaluate all 100 flags
Shard: flags-scaling
Allocated memory per operation (estimated) 1.22 MiB/op 1.23 MiB/op 0.9% more memory Not flagged
Evaluate all 100 flags
Shard: flags-scaling
Time per operation 1.35 ms/op 1.34 ms/op 0.1% less time Not flagged
Evaluate all 100 flags
Shard: flags-scaling
Process CPU time per operation 2.3 ms/op 2.3 ms/op <0.1% more time Not flagged
Evaluate all 1,000 flags
Shard: flags-scaling
Allocated memory per operation (estimated) 12.1 MiB/op 12.1 MiB/op <0.1% more memory Not flagged
Evaluate all 1,000 flags
Shard: flags-scaling
Time per operation 17.07 ms/op 17.41 ms/op 2% more time Not flagged
Evaluate all 1,000 flags
Shard: flags-scaling
Process CPU time per operation 25.13 ms/op 25.47 ms/op 1.4% more time Not flagged
Evaluate 1,000 flags under concurrent load
Shard: flags-memory
Idle process memory (RSS) 286.35 MiB 286.47 MiB <0.1% more memory Not flagged
Evaluate 1,000 flags under concurrent load
Shard: flags-memory
Observed peak process memory (RSS) 298.46 MiB 298.77 MiB 0.1% more memory Not flagged
Evaluate 1,000 flags under concurrent load
Shard: flags-memory
Managed heap after settling 9.62 MiB 9.62 MiB <0.1% less memory Not flagged
Evaluate 1,000 flags under concurrent load
Shard: flags-memory
Process memory after settling (RSS) 298.38 MiB 298.55 MiB <0.1% more memory Not flagged
Evaluate 1,000 flags under concurrent load
Shard: flags-memory
Lifetime peak process memory (RSS) 298.83 MiB 298.83 MiB <0.1% more memory Not flagged
Refresh 1,000 flag definitions
Shard: flags-memory
Idle process memory (RSS) 226.04 MiB 227.79 MiB 0.8% more memory Not flagged
Refresh 1,000 flag definitions
Shard: flags-memory
Observed peak process memory (RSS) 239.91 MiB 240.86 MiB 0.4% more memory Not flagged
Refresh 1,000 flag definitions
Shard: flags-memory
Managed heap after settling 11.63 MiB 11.63 MiB <0.1% less memory Not flagged
Refresh 1,000 flag definitions
Shard: flags-memory
Process memory after settling (RSS) 235 MiB 235.72 MiB 0.3% more memory Not flagged
Refresh 1,000 flag definitions
Shard: flags-memory
Lifetime peak process memory (RSS) 241.65 MiB 241.77 MiB <0.1% more memory Not flagged
Evaluate one boolean flag
Shard: flags-single
Allocated memory per operation (estimated) 17.16 KiB/op 17.14 KiB/op <0.1% less memory Not flagged
Evaluate one boolean flag
Shard: flags-single
Time per operation 83.28 µs/op 83.52 µs/op 0.3% more time Not flagged
Evaluate one boolean flag
Shard: flags-single
Process CPU time per operation 91.81 µs/op 91.8 µs/op <0.1% less time Not flagged
Evaluate a cohort-filtered flag
Shard: flags-single
Allocated memory per operation (estimated) 14.08 KiB/op 14.12 KiB/op 0.3% more memory Not flagged
Evaluate a cohort-filtered flag
Shard: flags-single
Time per operation 47.9 µs/op 48.08 µs/op 0.4% more time Not flagged
Evaluate a cohort-filtered flag
Shard: flags-single
Process CPU time per operation 57.04 µs/op 56.32 µs/op 1.3% less time Not flagged
Evaluate a flag (early match)
Shard: flags-single
Allocated memory per operation (estimated) 17.58 KiB/op 17.48 KiB/op 0.6% less memory Not flagged
Evaluate a flag (early match)
Shard: flags-single
Time per operation 47.99 µs/op 47.74 µs/op 0.5% less time Not flagged
Evaluate a flag (early match)
Shard: flags-single
Process CPU time per operation 56.52 µs/op 56.05 µs/op 0.8% less time Not flagged
Evaluate a flag (late match)
Shard: flags-single
Allocated memory per operation (estimated) 22.37 KiB/op 22.41 KiB/op 0.2% more memory Not flagged
Evaluate a flag (late match)
Shard: flags-single
Time per operation 48.31 µs/op 48.87 µs/op 1.2% more time Not flagged
Evaluate a flag (late match)
Shard: flags-single
Process CPU time per operation 56.23 µs/op 56.88 µs/op 1.2% more time Not flagged
Evaluate a flag (no match)
Shard: flags-single
Allocated memory per operation (estimated) 16.91 KiB/op 16.84 KiB/op 0.4% less memory Not flagged
Evaluate a flag (no match)
Shard: flags-single
Time per operation 5.62 µs/op 5.73 µs/op 2% more time Not flagged
Evaluate a flag (no match)
Shard: flags-single
Process CPU time per operation 10.28 µs/op 10.35 µs/op 0.6% more time Not flagged
Evaluate a property-filtered flag
Shard: flags-single
Allocated memory per operation (estimated) 12.75 KiB/op 12.68 KiB/op 0.5% less memory Not flagged
Evaluate a property-filtered flag
Shard: flags-single
Time per operation 46.8 µs/op 46.74 µs/op 0.1% less time Not flagged
Evaluate a property-filtered flag
Shard: flags-single
Process CPU time per operation 54.97 µs/op 54.57 µs/op 0.7% less time Not flagged
Evaluate a regex-filtered flag
Shard: flags-single
Allocated memory per operation (estimated) 18.19 KiB/op 18.18 KiB/op <0.1% less memory Not flagged
Evaluate a regex-filtered flag
Shard: flags-single
Time per operation 92.1 µs/op 90.54 µs/op 1.7% less time Not flagged
Evaluate a regex-filtered flag
Shard: flags-single
Process CPU time per operation 102.61 µs/op 100.73 µs/op 1.8% less time Not flagged
Evaluate a rollout flag
Shard: flags-single
Allocated memory per operation (estimated) 14.18 KiB/op 14.29 KiB/op 0.8% more memory Not flagged
Evaluate a rollout flag
Shard: flags-single
Time per operation 67.62 µs/op 66.32 µs/op 1.9% less time Not flagged
Evaluate a rollout flag
Shard: flags-single
Process CPU time per operation 76.43 µs/op 74.4 µs/op 2.6% less time Not flagged
Evaluate a multivariate flag
Shard: flags-single
Allocated memory per operation (estimated) 17.55 KiB/op 17.55 KiB/op <0.1% less memory Not flagged
Evaluate a multivariate flag
Shard: flags-single
Time per operation 86.48 µs/op 86.01 µs/op 0.5% less time Not flagged
Evaluate a multivariate flag
Shard: flags-single
Process CPU time per operation 96.04 µs/op 95.66 µs/op 0.4% less time Not flagged

Values are medians of paired measurements. Not flagged does not mean unchanged. Unavailable means a measurement could not be provided, not zero. Estimated allocation measurements retain their instrumentation uncertainty. RSS measures the whole process, not just SDK allocations; observed peaks are sampled checkpoints. Paired ranges in the diagnostics describe variability, not confidence intervals.

Each shard uses its own runner; compare Before PR against With PR within a row, not across shards.

Compared a0e648577347a0e36c1956fecc66f31623f96f9e → f766647f0734d6abaa06286384dcebfda0d70709.

Full report and diagnostics

102 metric rows; 102 rows shown in all results. Omitted or shortened data remain in comparison.json, including per-runner environments, resource limits, measurement methods, samples and checkpoints.

@turnipdabeets
turnipdabeets marked this pull request as ready for review November 6, 2026 20:23
@turnipdabeets
turnipdabeets requested a review from a team as a code owner November 6, 2026 20:23

@posthog posthog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PostHog Review · Standard · reviewed b20440d: 4 Should fix.

See this review and its findings in PostHog Review. Comment @posthog review --deep for a Deep review. A Deep review takes longer and looks deeper than a Standard review.

Comment thread packages/react-native/src/posthog-rn.ts Resolved
Comment thread packages/react-native/src/posthog-rn.ts Resolved
Comment thread packages/react-native/src/posthog-rn.ts Resolved
Comment thread packages/react-native/src/posthog-rn.ts Resolved

@posthog posthog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PostHog Review · Standard · reviewed 195bb82: 1 Should fix.

Comment thread packages/react-native/src/posthog-rn.ts Resolved

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant