← All Articles
Engineering9 min read

Core Web Vitals in 2025: How We Achieve Green Scores on Complex Apps

October 28, 20249 min read

Core Web Vitals are Google's measurable proxies for how a page feels to a real user, and they influence both search ranking and how many visitors stay. Getting a simple page into the green is easy. Doing it for a complex, data-heavy application takes a deliberate process. Here is the approach we use, and it connects directly to the backend performance work that often turns out to be the real bottleneck.

Understand the three metrics

The vitals measure three different feelings. One captures how quickly the main content appears, one captures how responsive the page is to interaction, and one captures how much the layout jumps around as it loads. They are distinct problems with distinct fixes, so the first step is always to find out which one you are actually failing.

Measure real users, not just your laptop

Your development machine on fast internet is not representative. Use field data from real users on real devices and networks alongside lab tests. Optimising against a lab score while real users on mid-range phones suffer is a common and wasteful mistake. Measure first, then fix the metric that is actually failing for real people.

Make content appear faster

The largest content element appearing quickly is mostly about getting critical resources to the browser fast: efficient server responses, sensible caching, optimised and properly sized images, and not blocking the initial render on non-essential work. Server-rendering the meaningful content, as a framework like Next.js does, helps a great deal here.

Keep interactions responsive

Responsiveness suffers when the main thread is busy running too much JavaScript when the user tries to interact. Ship less script, break up long tasks, and defer non-critical work. A page that looks ready but freezes when tapped is failing the user even if it rendered quickly.

Stop the layout from jumping

Layout shift is maddening and entirely preventable. Reserve space for images and embeds by specifying their dimensions, avoid inserting content above what the user is already reading, and load fonts in a way that does not reflow the page. Most shift comes from a handful of fixable causes.

Performance is a feature, not a cleanup

The teams that keep their vitals green treat performance as an ongoing product concern rather than a task they do once before launch and forget. The reason is simple: applications get slower by default. Every new feature adds code, every new image adds weight, and every well-meaning addition nudges the numbers in the wrong direction until one day the page feels sluggish and nobody can point to the change that did it. The antidote is to make performance visible and owned, with a budget enforced automatically so a regression is caught at the moment it is introduced rather than discovered weeks later by frustrated users. Framed this way, performance stops being a heroic optimisation project and becomes a quiet standard the team maintains, which is far cheaper and far more effective than periodic rescue missions.

Treat performance as a budget

Performance regresses one reasonable-looking change at a time unless you defend it. Set a performance budget and enforce it in your pipeline, so a change that blows the budget is caught in review rather than discovered in production weeks later. Performance is not a one-time push but an ongoing standard. If you want a complex application brought into the green and kept there, our web engineering team does this work.

GET STARTED

Ready to build
something exceptional?

From idea to launch in weeks, not months. Let's talk about your project.