Analysis
Web Vitals & errors
Core Web Vitals
Collected from real visits via PerformanceObserver — no extra library,
which is why the whole tracker is still 2.4 KB.
| Metric | What it measures |
|---|---|
| LCP | Largest Contentful Paint — when the main content appeared. |
| INP | Interaction to Next Paint — how sluggish interactions feel. |
| CLS | Cumulative Layout Shift — how much the page jumps around. |
| FCP | First Contentful Paint — first pixel of content. |
| TTFB | Time to First Byte — server response time. |
Values are reported once per page, on exit: LCP and CLS keep changing during a visit, so sending early would record the wrong number.
We report p75, not the average. A handful of slow visits drags an average and produces a
"nothing is wrong" illusion. Google's own thresholds are defined on p75.
Error tracking
Uncaught errors and unhandled promise rejections are captured with message, file and line. The same error is reported once per page, and at most ten distinct errors per page.
Stack traces are never collected. They routinely carry user data — URLs, and form values
captured in closures. Message, file and line are enough to locate a bug without shipping that.