Skip to content

test(e2e): Cover soft navigation web vitals across router instrumentations - #24324

Open
logaretm wants to merge 1 commit into
awad/soft-nav-web-vitals-e2efrom
awad/soft-nav-framework-coverage
Open

test(e2e): Cover soft navigation web vitals across router instrumentations#24324
logaretm wants to merge 1 commit into
awad/soft-nav-web-vitals-e2efrom
awad/soft-nav-framework-coverage

Conversation

@logaretm

@logaretm logaretm commented Sep 10, 2026

Copy link
Copy Markdown
Member

Adds an e2e test per router instrumentation asserting that a soft navigation's web vitals are attributed to the navigation span they were measured on.

This covers most frameworks that can reliably test this, tanstack seems to have an edge case that I need to investigate separately.

…tions

Soft navigation vitals correlate to a navigation span through the interaction that triggered
it, so the correlation only holds while the span is started before that interaction's Event
Timing entry is delivered. Every router instrumentation starts its span at a different point,
and none of them start it on the history change, so each is worth pinning down separately.

Covers react-router v6 component routes (layout effect), a react-router data router (deferred
until the router goes idle, i.e. after loaders resolve, the latest of the four), Vue
(`router.beforeEach`) and Angular (router event stream).

TanStack Router is left out: the app that runs it with span streaming
(solid-tanstack-router) currently cannot install because of an upstream dependency, and the
one that does install (tanstack-router) is on the static trace lifecycle, where soft
navigation vitals do not apply.
@logaretm
logaretm added this pull request to stack #24274 September 10, 2026 18:20
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 28.92 kB added added
@sentry/browser - with treeshaking flags 27.21 kB added added
@sentry/browser - with treeshaking flags tracing without tracing 27.11 kB added added
@sentry/browser (incl. Tracing) 50.44 kB added added
@sentry/browser (incl. Tracing + Span Streaming) 50.46 kB added added
@sentry/browser (incl. Tracing, Profiling) 53.44 kB added added
@sentry/browser (incl. Tracing, Replay) 89.97 kB added added
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 79.09 kB added added
@sentry/browser (incl. Tracing, Replay with Canvas) 94.67 kB added added
@sentry/browser (incl. Tracing, Replay, Feedback) 107.68 kB added added
@sentry/browser (incl. Feedback) 46.41 kB added added
@sentry/browser (incl. sendFeedback) 33.97 kB added added
@sentry/browser (incl. FeedbackAsync) 39.08 kB added added
@sentry/browser (incl. Metrics) 29.93 kB added added
@sentry/browser (incl. Logs) 30.2 kB added added
@sentry/browser (incl. Metrics & Logs) 30.87 kB added added
@sentry/react 30.67 kB added added
@sentry/react (incl. Tracing) 52.76 kB added added
@sentry/vue 36.16 kB added added
@sentry/vue (incl. Tracing) 52.7 kB added added
@sentry/svelte 28.93 kB added added
CDN Bundle 30.66 kB added added
CDN Bundle (incl. Tracing) 50.95 kB added added
CDN Bundle (incl. Logs, Metrics) 32.93 kB added added
CDN Bundle (incl. Tracing, Logs, Metrics) 52.93 kB added added
CDN Bundle (incl. Replay, Logs, Metrics) 73.62 kB added added
CDN Bundle (incl. Tracing, Replay) 88.5 kB added added
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 90.45 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback) 94.57 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 96.57 kB added added
CDN Bundle - uncompressed 90.73 kB added added
CDN Bundle (incl. Tracing) - uncompressed 152.2 kB added added
CDN Bundle (incl. Logs, Metrics) - uncompressed 97.31 kB added added
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 158.16 kB added added
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 226.72 kB added added
CDN Bundle (incl. Tracing, Replay) - uncompressed 271.77 kB added added
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 277.72 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 285.47 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 291.41 kB added added
@sentry/nextjs (client) 55.09 kB added added
@sentry/sveltekit (client) 50.86 kB added added
@sentry/core/server 37.08 kB added added
@sentry/core/browser 13.66 kB added added
@sentry/node 128.59 kB added added
@sentry/node/import (ESM hook with diagnostics-channel injection) 81.82 kB added added
@sentry/node - without tracing 89.55 kB added added
@sentry/node - without channel injection 107.53 kB added added
@sentry/aws-serverless 97.77 kB added added
@sentry/cloudflare (withSentry) - minified 203.01 kB added added
@sentry/cloudflare (withSentry) 505.44 kB added added

@logaretm

Copy link
Copy Markdown
Member Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 38b211f. Configure here.

@logaretm
logaretm marked this pull request as ready for review September 10, 2026 19:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant