Performance is a line in the P&L, not a line in the load-test report. Treat Core Web Vitals as a frontend detail the developers will somehow sort out, and you give away two things at once: visibility on Google and conversion in the funnel. Both can be put in euros, and that is exactly why this belongs at the decision-maker level rather than buried in a Jira backlog.
The reason it matters right now is that the metrics have moved. Since March 2024 Google no longer measures only how fast a page responds to the first tap, but how responsive it stays across the entire session. The frontend architecture has shifted in parallel: Server Components and incremental rendering move the load off the browser. Anyone making a platform decision today is also deciding the performance ceiling the project can ever reach. That ceiling is almost impossible to raise later.
Why Core Web Vitals are revenue, not just engineering
Core Web Vitals turn a subjective feeling, "the page feels slow", into three measurable numbers that Google collects from real-user data. LCP (Largest Contentful Paint) measures when the largest visible content has loaded; anything under 2.5 seconds is good. INP (Interaction to Next Paint) measures response latency on interactions across the whole session; anything under 200 milliseconds is good. CLS (Cumulative Layout Shift) measures how much the layout jumps around; anything under 0.1 is good. The measurement is taken at the 75th percentile and split by mobile and desktop. That split matters, because your desktop numbers at the office can paper over a poor mobile experience.
The point that lands in the boardroom: these numbers correlate with business metrics. The study Milliseconds Make Millions, commissioned by Google and run by 55 and Deloitte, looked at more than 30 million sessions across 37 brand sites in late 2019. A 0.1-second improvement in load time correlated, in retail, with +8.4% conversion and +9.2% average order value, and in travel with +10.1% conversion. Pinterest reported +15% signup conversion and +15% SEO traffic after a performance rebuild, which it described in its own engineering blog as the team's biggest user-acquisition win that year.
These figures are solid enough to justify an investment, but they are not laws of nature, and I will come back to why. For now the framing is enough: performance is a lever with measurable effect on two revenue drivers, visibility and closing the sale.
INP has replaced FID: what changed in 2024
If you are still working from the 2023 mental model, you are optimising the wrong metric. On 12 March 2024 Google officially made INP a Core Web Vital, replacing FID (First Input Delay). The difference is not cosmetic. FID measured only the delay of the very first interaction, a forgiving number that was almost always green. INP measures response latency across all interactions in a session and reports one of the worst values. That exposes exactly the frustration users actually feel: the tenth click in checkout that hangs, not the first.
For architecture decisions this means JavaScript that blocks the main thread gets more expensive. Every heavy client-side computation, every oversized state manager, every hydration of a whole page tree now shows up visibly in INP. That is why architectures sending less JavaScript to the browser hold a structural advantage. Not because they are modern, but because they put less work on the main thread that determines INP.
This shift is also a warning to anyone who signed off on their performance numbers before March 2024. A page that was green under FID can be red under INP. If you have not re-measured since then, you do not know your actual position. Google measures continuously from the Chrome User Experience Report, so the regression reaches your ranking before it reaches your dashboard.
How Next.js Server Components improve the starting conditions
Here the platform decision gets concrete. Most performance problems arise because too much JavaScript reaches the browser, where it has to be parsed, executed and hydrated. That is exactly where React Server Components in Next.js intervene. Components render on the server by default; only what is explicitly marked with 'use client' ends up in the client bundle, together with its import graph. The Next.js documentation directly attributes an improvement in First Contentful Paint to shipping less JavaScript. Less client JavaScript is the most direct leverage on INP an architecture can offer.
On top of that comes ISR (Incremental Static Regeneration). Instead of rendering every request live, Next.js serves pre-rendered static pages for most requests and regenerates them in the background using the stale-while-revalidate pattern: the user gets the finished page immediately, the refresh happens asynchronously. That cuts server load and stabilises LCP, because the expensive render work sits outside the user's critical path. Cache-Control headers are set automatically, and the caching behaviour is observable via the x-nextjs-cache header.
How far this scales becomes clear in the high-traffic case. For sites with audiences in the millions, this combination of pre-rendering and a lean client bundle is precisely why a stack of Sanity and Next.js can serve millions of visitors without a performance collapse. And because Google measures at the mobile percentile, every one of these optimisations feeds directly into the numbers that rank, an argument tied tightly to disciplined mobile-first design. The next/image optimisation runs self-hosted too, zero-config via next start, shipping modern formats and the right image sizes by default and so addressing the single most common LCP killer out of the box.
The uncomfortable point: Next.js makes good numbers possible, not automatic
Now the part a vendor selling you Next.js would rather skip. The framework is a precondition, not a guarantee. Used wrong, a Next.js page is as slow as any other, sometimes slower, because the framework weight is added on top.
The typical mistakes are well known and surface in every audit. A team marks too much with 'use client' and pushes half the page tree into the client bundle, and the Server Component advantage evaporates. It builds render waterfalls, where one data query waits on the next instead of loading in parallel, and LCP climbs. It drops in unchecked images instead of using the image optimisation. It reaches for a heavy client-side state library where server state would have done, blocking the main thread, with direct damage to INP. Next.js prevents none of these mistakes. It only makes them easier to avoid when the team knows what it is doing.
Then there are the studies themselves. The famous rule of thumb, "Amazon: 100 ms of delay costs 1% of revenue", has no official Amazon source. It traces back to a 2006 Stanford presentation by a former engineer, roughly twenty years old and context-dependent. The often-cited Walmart numbers come from a 2012 Velocity talk, documented only through secondary sources. Even the Deloitte/Google uplifts from late 2019 are sector-specific correlations, not a universal law of "0.1 second = +X% everywhere". Present these numbers as a fixed causal rule in front of the board and the first sharp CFO will take you apart. Cite them as orders of magnitude, with the date and the vertical attached. That is more honest, and it survives the challenge.
The honest trade-off: performance is only one factor
A thesis is only worth something if it knows its own limit. Here is the limit: Core Web Vitals are one ranking factor among many, and they do not map one to one onto revenue. Google itself states in its search documentation that there is no standalone boost signal and that relevance and content quality stay primary. A perfect LCP rescues no weak offer, no confusing funnel, no page that sells the wrong thing.
That does not relativise the investment, it sharpens it. Performance is hygiene, not a growth lever in a vacuum. Between two pages of equal substance, the page-experience signal tips the balance; on a bad page, the fastest load time changes nothing. So the honest framing is: get the offer right first, then the funnel, then performance feeds into both. In that order.
Invert it, polishing the last 100 milliseconds while checkout still has three redundant required fields, and you are micro-optimising at the wrong end. The right question in the steering committee is not "how fast are we" but "where in the funnel is slowness costing us conversions". That question leads to prioritised, defensible investments rather than a green Lighthouse score as an end in itself. There are also cases where Next.js is the wrong choice: a pure content site with no interactivity carries framework weight a lighter setup would shed.
What performance costs and earns over time
The TCO perspective is missing from most performance discussions, and it belongs there. Performance is not a one-off project but an operating state that has to be maintained. Every new feature, every tracking script from marketing, every embedded third-party component can degrade the numbers. Without continuous monitoring from real-user data, you notice the regression only when the ranking gives way, and recovery is expensive by then.
On the architecture side there is a pattern we see consistently in our own projects: a clean first implementation is an investment that pays back over the lifetime, because the performance ceiling sits high and optimisations stay cheap. A sloppy implementation defers the cost, where it accrues as technical debt with interest. If you want the difference in numbers, the same logic is worked through in our breakdown of what a self-hosted stack really costs over time.
The operating effort for a well-built self-hosted setup runs, in our experience, to a few hours a month for updates, monitoring and backups. That is modest against what poor performance costs on the revenue side, if the orders of magnitude in the studies apply to your business even approximately. The maths rarely comes out close.
What I tell decision-makers
Treat performance as a business metric with its own reporting, not a frontend by-product. Have the Core Web Vitals of your most important funnel pages shown to you from real-user data, split by mobile and desktop, at the 75th percentile, not the flattering Lighthouse score from a developer laptop. If the mobile numbers are red, you have a quantifiable revenue problem, not a technical detail.
When you choose the platform, choose an architecture that sends little JavaScript to the browser and can pre-render. Next.js with Server Components and ISR is one of the strongest available starting conditions for that, but insist that the team knows where 'use client' belongs and where it does not. The full architectural case for why this stack works as a performance foundation is on our Next.js pillar page. The platform alone buys you nothing. The skill of the team using it decides whether the ceiling is reached.
And keep the order in mind: offer, funnel, then performance. Invert it and you optimise milliseconds on a page that fails to sell for other reasons. Keep it and performance becomes exactly what it should be, a measurable contribution to revenue you can defend in front of any CFO.
