Web Vitals
The Web Vitals insight tracks Google Core Web Vitals — the same metrics Google scores in PageSpeed Insights and ranks for SEO. Capture is opt-in from the SDK; the dashboard renders trends per URL.
Open Web Vitals in the sidebar (/web-vitals).
The metrics
| Metric | What it measures | ”Good” threshold |
|---|---|---|
| LCP — Largest Contentful Paint | Load speed | < 2.5s |
| INP — Interaction to Next Paint | Responsiveness | < 200ms |
| CLS — Cumulative Layout Shift | Visual stability | < 0.1 |
| TTFB — Time to First Byte | Server response | < 800ms |
| FID — First Input Delay | (Deprecated, replaced by INP) | — |
Each tab shows the p75 and p95 trend lines over time with three threshold bands shaded behind (Good / Needs Improvement / Poor). Below the chart, a Top URLs table breaks p75 down by URL pattern so you can spot which pages drag the median.
Enabling capture
Web Vitals capture is off by default. Turn it on in the SDK config:
new TrackCrumb({
apiKey: process.env.TRACKCRUMB_API_KEY,
webVitals: true,
});Vitals are sampled per page visit and sent as a single $web_vitals event when the page unloads (using the Beacon API so the request survives navigation).
Web Vitals add about 4 KB gzipped to the SDK bundle. The metric collection runs on requestIdleCallback, so it does not compete with your app’s critical path.
Reading the dashboard
- The p75 line is the value Google uses for SEO scoring — treat it as your primary KPI.
- The p95 line is your tail experience — slow phones, weak networks.
- When the p75 crosses into the amber band, expect Google PageSpeed scores to drop within a few days.
- The Top URLs breakdown is the place to start when a metric regresses — usually one or two routes account for most of the drag.
Limits & gotchas
- Browser support — Web Vitals capture works in Chrome, Edge, and other Chromium browsers (the official
web-vitalslibrary Safari/Firefox shims fall back to a subset of metrics). - CLS is cumulative until unload — a page open in a background tab for hours can produce inflated CLS as ads/lazy elements settle.
- No metric is available for pages closed via tab-crash or kill — the unload beacon does not fire.
Related
- Settings — workspace data-retention controls