Lab data vs field data (synthetic vs RUM)
The gap between a speed test you ran on a simulated device and the numbers your actual visitors produce. Lab is repeatable, field is true.
See it
What it is
Lab data comes from a test you run: Lighthouse, WebPageTest, or a CI check loading one URL once on a throttled CPU and a fake slow network, cold cache, no extensions, no logged-in state. Field data comes from the people actually using the site, collected either by your own RUM script or by Chrome's public CrUX dataset. The p75 over a rolling 28 days is the Core Web Vitals assessment convention and what CrUX reports; your own RUM is free to aggregate at any statistic over any window, and a daily p75 plus a p95 is often more useful for catching a regression.
Use lab data to debug and to gate: it is repeatable, it gives you a waterfall and a flame chart, and you can run it on a pull request. Use field data to decide whether anything is actually wrong: it is the only thing Google grades, and the only thing that knows about your users' cheap Androids, hotel wifi, warm caches, and ad blockers.
Gotcha: some metrics barely exist in the lab. INP needs a human clicking things, so a synthetic run reports nothing and substitutes TBT as a rough stand-in. Lab CLS only sees shifts in the first few seconds of an untouched page, so the shift that happens when a real person scrolls past a lazy-loaded ad never shows up. A perfect 100 with a failing CrUX report is the most common performance situation there is.
Ask AI for it
Set up both lab and field performance measurement for this site. For lab: add Lighthouse CI to the pipeline, run three runs per key template on mobile emulation with 4x CPU throttling and Slow 4G, and store the reports as build artifacts. For field: add the 'web-vitals' library, beacon LCP, INP, CLS, and TTFB with navigator.sendBeacon on visibilitychange, tag each event with route and device type, and store the raw events so you can aggregate at whatever statistic and window you need. Report p75 alongside p95, and add a 28-day rolling p75 view where you want to compare against the Core Web Vitals assessment. Build one dashboard that shows the lab number and the field p75 side by side per route so the divergence is obvious.