Performance
Real user monitoring
Also called RUM.
Real user monitoring is collecting performance timings from actual visitors' browsers as they use the site. It shows what people experienced on their own devices and networks, not what a lab test predicts.
How it is measured
A small script uses the Performance API and `PerformanceObserver` to capture LCP, INP, CLS, TTFB, and navigation timings, then sends them with `navigator.sendBeacon`. Results are reported as percentiles (p50, p75, p95) by page, device class, and country, never as a single average.
Sample rate matters. Capturing every pageview on a 2M-view site is expensive, while 10% still gives thousands of points a day. Not every browser exposes every metric, so check coverage per metric before comparing numbers.
Worked example
A ski-rental shop's site has a lab LCP of 2.1 s from Lighthouse. Its RUM beacon, sampling 20% of 38,000 weekly views, shows a p75 LCP of 3.9 s overall and 5.6 s for Android visitors on a 3g connection type. Those visitors are in mountain towns with weak signal and make up 22% of traffic.
The shop serves a 640 px hero to that bucket and a lighter image when Save-Data is on. After two weeks p75 for the bucket falls to 3.8 s and the overall number improves to 3.2 s.
How it differs
RUM measures people. Field data is the broader term, and RUM is how you collect your own. Compared with synthetic monitoring, RUM cannot test before launch or on a quiet night, but it sees real devices, real networks, and the pages people actually visit.
Common errors
Reporting the mean. Dropping slow sessions as outliers. Not segmenting by device or connection. Loading the RUM script in a way that blocks rendering. Forgetting that ad blockers hide a share of beacons. Comparing RUM numbers directly to Lighthouse scores.
In practice
Start with LCP, INP, and CLS at p75 for your five busiest pages, split by mobile and desktop. Alert when p75 crosses the 'good' threshold. Use lab runs to reproduce whatever the RUM data flags. The open-source `web-vitals` library is enough to begin.