The Metrics That Matter
Performance measurement has no single correct answer. Different products prioritize different benchmarks, and two applications can score similarly on the same metric while feeling entirely different to their users. Web Vitals emerged as a response to this problem: a standardized set of metrics that correlate directly with user experience, giving developers a common language for discussing performance and prioritizing fixes.
Actual Speed vs. Perceived Speed
Consider a piece of code that takes a long time to produce a console output. It is objectively slow, and if it runs on the main thread it may block rendering entirely, freezing the tab. That is a clear performance problem affecting both actual speed and the user's perception of the app.
Move that same task into a web worker, though, and the situation changes. The code does not execute any faster, but the main thread stays responsive. The user can keep interacting with the application and receives feedback while the task runs. The measurable performance is unchanged, but perceived performance improves dramatically. Keeping the main thread clear is often more valuable than shaving milliseconds off a background computation.
The Web Vitals Breakdown
Google's Web Vitals initiative narrows the sprawling field of performance metrics into a practical set. Each metric targets a different aspect of the loading and interaction experience:
- First Contentful Paint (FCP): Time from the start of loading until content appears on screen.
- Largest Contentful Paint (LCP): Render time for the largest image or text block visible in the viewport. A good score stays under 2.5 seconds for 75% of page loads.
- First Input Delay (FID): Delay between a user interaction and the browser processing the request. Good scores are under 100ms for 75% of loads.
- Cumulative Layout Shift (CLS): The sum of all unexpected layout shifts during the page's lifetime. The threshold for a good score is 0.1 on 75% of loads.
- Time to Interactive (TTI): Time from page load start until main sub-resources finish loading.
- Total Blocking Time (TBT): Time between FCP and TTI during which the main thread is blocked and cannot respond to input.
Core Web Vitals are the subset Google identifies as having the greatest impact on user experience. As of 2022, the three Core Web Vitals are LCP (speed), CLS (stability), and FID (interactivity).
Lab Data vs. Field Data
The quickest way to check Web Vitals is a Lighthouse report from Chrome DevTools, which produces a Chrome User Experience Report (CrUX). That report is based on a 28-day average of data from Chrome users who have browsing history sync enabled, no Sync passphrase set up, and usage statistic reporting turned on.
That sample population may not represent your actual users. CrUX gives a ballpark indicator for ad-hoc checks, but it is a synthetic view of an ideal lab environment. To understand real-world performance, you need Real User Monitoring (RUM) that tracks actual visitors across all browsers within a defined timeframe. Setting up such monitoring manually involves many edge cases. Tools like Raygun handle this integration and offer GDPR-friendly data collection with a quick setup alongside their error reporting features.
Making Monitoring a Habit
Observability often becomes an afterthought, added only when something breaks. Treating monitoring as part of the development lifecycle allows teams to move faster by spotting performance issues before users report them. Incorporating observability into new features also keeps codebases clean and reduces the need for dedicated refactoring sprints.
Spotting Regressions After Deployments
Just as CI tests prevent feature regressions, deployment tracking can flag performance regressions the moment a new release goes live. Tools that annotate performance dashboards with deployment markers make it easy to correlate a spike in a Web Vital with a specific release.
This approach makes performance budgets sustainable. A team can quickly see which deployment worsened LCP or CLS, identify the affected deployments, and focus on the users who were impacted. Without such visibility, performance issues surface weeks later when they are far harder to trace.
RUM data also supports drilling down to individual users. A score on a histogram can be clicked to reveal a list of impacted sessions with instance-level detail. That granularity lets developers take targeted action based on specific evidence rather than applying generic performance advice, and later verify whether the fix actually resolved the problem.
Automating Alerts
Dashboards only help when someone watches them. As applications and teams scale, responsibilities fragment, making it impractical to rely on manual review. Setting up alert triggers on performance metrics ensures the right people get notified about significant issues without constant dashboard monitoring. Automated alerts are the safeguard that catches the major problems between scheduled check-ins, and they should be treated as a standard practice rather than an optional extra.
Teams that actively monitor and optimize Web Vitals using real user data are better positioned to ship faster experiences and respond quickly when something degrades. The hard part is not finding a tool, but committing to the process of continuous visibility and improvement.



