Repository navigation
Run the React Router e2e suite on Bun, Deno and Cloudflare from one app #24836
Copy link
Copy link
Open
Description
Run the React Router e2e suite on Node, Bun, Deno and Cloudflare from one app. Node stays the required job; Bun, Deno and Cloudflare are optional variants that become required once green.
Apps
- Base:
react-router-8-framework - Fold in, then delete:
react-router-8-cloudflare
Cover on every runtime
The existing suite runs unchanged and branches on RUNTIME only where runtimes are expected to differ. Add assertions where the suite has none today:
- Errors (test(e2e): Add Bun, Deno and Cloudflare variants to react-router-8-framework #24598)
- Parameterized route names: pages, resource routes and server errors (feat(react-router): Export createSentryServerInstrumentation from the Cloudflare entry #25042)
- Per-request isolation (test(e2e): Cover isolation, trace propagation and logs on all react-router-8-framework runtimes #25041)
- Incoming trace continuation (test(e2e): Cover isolation, trace propagation and logs on all react-router-8-framework runtimes #25041)
- Outgoing
fetchwithsentry-traceandbaggage(test(e2e): Cover isolation, trace propagation and logs on all react-router-8-framework runtimes #25041) - Logs (test(e2e): Cover isolation, trace propagation and logs on all react-router-8-framework runtimes #25041)
Findings (runtime audit, September 2026, develop 6f2da7483d; database spans were measured with mysql or mysql2). The e2e suite now checks them:
- Bun: route names, isolation, incoming trace, outgoing fetch and db spans (mysql, ioredis) work with
@sentry/bun. Underbun run, Express insidereact-router-servegets no spans, because Bun has no runtime hook for the SDK (fix(runtime): preserve named exports of plugin-loaded CommonJS modules oven-sh/bun#31770). WithBun.build()andsentryBunPlugin, Express gets spans. - Deno: outgoing fetch (deno: Outgoing
fetchgets no span and no trace propagation #23891) and db spans (mysql, ioredis) work. Deno 2.9 or later is required. - Cloudflare: everything works.
- Bun, Deno and Cloudflare send spans for
/__manifestandfavicon.ico, because only theinit()of@sentry/react-routeradds the filter for them.
Setups the audit ran: Bun, Deno, Cloudflare
Done when
-
react-router-8-frameworkruns its suite on Node, Bun, Deno and Cloudflare (test(e2e): Add Bun, Deno and Cloudflare variants to react-router-8-framework #24598) - Every variant is green and required, or this issue records why a runtime is not supported (test(e2e): Cover isolation, trace propagation and logs on all react-router-8-framework runtimes #25041)
-
react-router-8-cloudflareis deleted (test(e2e): Move react-router-8-cloudflare MySQL tests into react-router-8-framework #24599) - SDK defects the variants surface are fixed here, or split into their own issue when the fix is large or shared with other libraries: fixed in fix(react-router): Resolve the Cloudflare entry in Workers and skip trace meta tags in prerendered pages #24866 and feat(react-router): Export createSentryServerInstrumentation from the Cloudflare entry #25042; fix(server-utils): Transform modules once when two Sentry Vite plugins add orchestrion #25043 (both Sentry Vite plugins on Cloudflare) is open
Reactions are currently unavailable
Activity
linear-code commentedon Sep 29, 2026
JS-3837
test(e2e): Move react-router-8-cloudflare MySQL tests into react-rout…
test(e2e): Cover isolation, trace propagation and logs on all react-r…
feat(react-router): Export createSentryServerInstrumentation from the…