A slow website isn't a cosmetic detail. It's a cost you pay every day.
Core Web Vitals, Next.js architecture, and why load speed is now a direct lever on SEO and conversions, not a detail developers worry about alone.
53% of mobile visits abandon a page that takes more than 3 seconds to load. That's not a slide statistic — it's traffic you paid to bring to the site, lost before anyone reads a word. Technical performance isn't a detail for developers to worry about. It's a direct lever on SEO, conversions, and acquisition cost.
What Google actually measures
Core Web Vitals are three metrics, not a generic score to chase. Largest Contentful Paint (LCP) measures how long the main content takes to appear: under 2.5 seconds is good, over 4 is a problem. Interaction to Next Paint (INP) measures how responsive the interface is when a user clicks, taps, or types: above 200 milliseconds, the lag becomes noticeable. Cumulative Layout Shift (CLS) measures how much the page "jumps" while loading: under 0.1 is stable, over 0.25 is that button that moves right before you tap it.
Google uses these three numbers as a direct ranking signal. But the reason they matter isn't the algorithm — it's that they measure the exact moment a user decides whether to stay or leave.
The real cost of a slow site
A website that loads in 1 second converts up to 3x more than one that takes 5, according to a Portent study across 100M+ e-commerce visits. That's not a margin you recover with a more aggressive ad campaign — it's conversion disappearing before the funnel even starts, regardless of how good the rest of the site is.
Most business websites aren't slow for some complex technical reason. They're slow because nobody ever measured them: unoptimized images, JavaScript loaded before it's needed, fonts blocking rendering, third parties (chat widgets, analytics, ad pixels) stacking up unchecked.
What we build to stay in the green
It's not a checklist run once at the end of a project. It's how we write code from the first commit:
- React Server Components by default: JavaScript ships to the browser only where interactivity is actually needed, not for the entire page.
- Images served through next/image with explicit dimensions and modern formats (WebP/AVIF), to eliminate layout shift and unnecessary weight.
- Fonts loaded with next/font and self-hosted: zero blocking requests to Google Fonts, zero flash of invisible text.
- Streaming and Suspense for above-the-fold content, so the user sees something useful before the entire page is ready.
- CDN-level caching with targeted invalidation (tags or paths), not a blanket "refresh every hour and hope."
Performance isn't bolted on at the end
The most common pattern we see is the opposite: build the site, then "optimize" in the last two weeks. By then, performance is a constraint colliding with architecture decisions already made, not a feature of the product.
We treat it as a requirement from the first line of code, and measure it after launch with the same tools Google uses. Not once and done: continuously, because every new feature is a chance to break what you'd already optimized.