Context
The navigation / TTID-TTFD bug cluster (#6431, #6432, #6433, #6434, #6436) was all reported on the same stack: Expo Router + New Architecture + Hermes. Each defect now has unit-level regression coverage, and PR #6530 adds an end-to-end trace/parent-span assertion — but that e2e runs against samples/react-native, which uses React Navigation bottom tabs, not Expo Router.
The Expo sample (samples/expo) already uses expo-router with file-based routing, so the app that reproduces the cluster's stack exists. What's missing is the e2e envelope-capture harness — mockedSentryServer, Maestro flows, jest configs, and a Sauce Labs CI job — which is currently wired only into samples/react-native.
Proposal
Port the existing e2e harness to samples/expo, mirroring captureSpaceflightNewsScreenTransaction:
mockedSentryServer envelope capture + jest configs (iOS/Android, auto- and manual-init)
- Maestro navigation flows: cold start where
Sentry.init() precedes React render, push, POP/POP_TO, background → foreground → cached screen, route override provider
- assert the same properties the React Navigation e2e checks: TTID/TTFD measurements present, and display spans share the navigation transaction's
trace_id / parent_span_id
- add the Expo e2e job to
e2e-v2.yml
Why this is deferred (not started now)
Trigger to prioritize
Pick this up when either:
- another Expo Router navigation / TTID-TTFD bug is reported, or
- we decide to promote Expo Router + New Architecture to a formally guaranteed support tier.
Notes
Effort is harness wiring, not app building — the Expo Router sample app already exists. Related: #6530 (React Navigation e2e assertion).
Context
The navigation / TTID-TTFD bug cluster (#6431, #6432, #6433, #6434, #6436) was all reported on the same stack: Expo Router + New Architecture + Hermes. Each defect now has unit-level regression coverage, and PR #6530 adds an end-to-end trace/parent-span assertion — but that e2e runs against
samples/react-native, which uses React Navigation bottom tabs, not Expo Router.The Expo sample (
samples/expo) already usesexpo-routerwith file-based routing, so the app that reproduces the cluster's stack exists. What's missing is the e2e envelope-capture harness —mockedSentryServer, Maestro flows, jest configs, and a Sauce Labs CI job — which is currently wired only intosamples/react-native.Proposal
Port the existing e2e harness to
samples/expo, mirroringcaptureSpaceflightNewsScreenTransaction:mockedSentryServerenvelope capture + jest configs (iOS/Android, auto- and manual-init)Sentry.init()precedes React render, push, POP/POP_TO, background → foreground → cached screen, route override providertrace_id/parent_span_ide2e-v2.ymlWhy this is deferred (not started now)
withAnchor's internalPOP_TObookkeeping dispatch creates a spurious duplicate navigation span #6434 is still open and its test should land with its fix.Trigger to prioritize
Pick this up when either:
Notes
Effort is harness wiring, not app building — the Expo Router sample app already exists. Related: #6530 (React Navigation e2e assertion).