You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 80bcd04
Browse filesBrowse the repository at this point in the historyBrowse files
feat(browser): Emit web vitals as streamed spans (#19827)
## Summary
(Updated from @Lms24)
Closes#17931
When span streaming is enabled (`traceLifecycle: 'stream'`), emit web
vital values as non-standalone spans that flow through the v2 pipeline
(`afterSpanEnd` → `captureSpan()` → `SpanBuffer`).
- Emit LCP, CLS, INP as streamed spans when
`hasSpanStreamingEnabled(client)` is `true`
- LCP, CLS, INP v2 spans exclusively send new
`browser.web_vital.<vitalName>.*` attributes
- Disable standalone CLS/LCP spans when span streaming is enabled
(`!spanStreamingEnabled && enableStandaloneClsSpans`)
- Add `MAX_PLAUSIBLE_INP_DURATION` (60s) sanity check to streamed INP
path, matching the existing standalone handler
- TTFB, FCP, FP are **not** emitted as spans — they stay as pageload
span attributes but get sent with the new
`browser.web_vital.(ttfb|fcp|fp).value` attributes
- Performance meta attributes are sent with better names
(getsentry/sentry-conventions#321)
- Added integration tests
- LCP v2 spans now have a duration and are no longer point in time
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Lukas Stracke <lukas.stracke@sentry.io>
Copy file name to clipboardExpand all lines: dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/navigation-streamed/test.ts
+8-4Lines changed: 8 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -69,13 +69,17 @@ sentryTest('starts a streamed navigation span on page navigation', async ({ getL
0 commit comments