getsentry / getsentry/sentry-javascript

Decide whether to report web vitals after a bfcache restore

Abierto
#22,394 1 comentario 0 reacciones 1 asignado Reclamado por @logaretm Ver en GitHub
Browser Feature: web-vitals
Lenguaje dominante
TypeScript
Estrellas
8.7k
Forks
1.8k
Merge medio
1 d 17 h
PR fusionados (30 d)
515

Descripción

The browser SDK does nothing special for web vitals when a page is restored from the back/forward cache. Per the [web vitals impact guidance](https://web.dev/articles/bfcache/#core-web-vitals), a bfcache restore should be treated as a fresh page visit with LCP/CLS/INP re-measured. Today we neither re-measure nor report anything for the restored view:

1. **Vitals aren't re-measured.** Our vendored web-vitals fork (`getLCP.ts`/`getCLS.ts`/`getINP.ts` in `packages/browser-utils/src/metrics/web-vitals/`) has no bfcache/`pageshow` reset. `initMetric.ts` only sets `navigationType: 'restore'` from `document.wasDiscarded` (tab discard/reload), which never fires on a bfcache restore since the document isn't reloaded.
2. **No span to attach to.** `browserTracingIntegration` starts a pageload span at init and navigation spans via history instrumentation only. It doesn't listen for the `pageshow` (`persisted === true`) a restore fires, so no span starts for the restored page.

So we have two options here:

- **Exclude (today):** underrepresents these fast views, so reported vitals skew slower than reality. Stays comparable to today's numbers.
- **Include + tag:** report them but tag the web vital / pageload span with a new attribute so restore-driven vitals are filterable downstream. Costs wiring + a new attribute.

Industry has drifted toward include + label (CrUX and Google's web-vitals now attribute bfcache restores).

Open questions:

- Do we want to report web vitals for bfcache-restored views at all?
- If yes, agree on the tagging attribute so the skew stays filterable.

Wiring if we do: start a pageload span on the `persisted` pageshow, reset + rebind the web-vitals reporters against it, and tag it.

`bfcacheMetricsIntegration` (#22391) covers hit/miss observability but intentionally doesn't touch web vitals.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.