Web Vitals got stricter in 2026 — and at the same time fairer. Anyone shipping a seriously planned site that loads in over 1.5 seconds today has cut corners somewhere. Here is what makes the difference.
INP replaced FID — and that is a good thing
Interaction to Next Paint measures the delay of every interaction, not just the first. Anyone shipping React apps with 3 MB of JavaScript fails this. INP under 200 ms is the threshold.
LCP under 1.5 seconds is not a myth
The most important above-the-fold content should be visible in under 1.5 seconds. We hit this by default — with one rule: the hero image gets fetchpriority="high", fixed dimensions, AVIF format.
Fonts: the underrated killer
Self-hosted fonts with font-display: swap and preload are mandatory in 2026. Google Fonts CDN is legally risky in the EU and slower than your own domain. Loading three families? Preload exactly three files — no more.
What we deliberately no longer do
- Carousel sliders (CLS killer)
- Hero video loops (LCP and INP sin)
- Late-loaded webfonts that block render
- Tracking scripts before first paint (inline Plausible is enough)
What Astro delivers here
Static delivery as default. Component islands only where interaction is needed. View Transitions API native, so page changes feel app-like — without a gram of extra JavaScript.
How we measure
Lighthouse as baseline, then RUM (real-user monitoring) via Cloudflare Web Analytics — no cookie, no PII. Without RUM you are optimising for a lab scenario, not reality.
Sources
- Google — Web Vitals — web.dev
- Astro Docs — Performance — docs.astro.build
- Cloudflare — Real User Monitoring — www.cloudflare.com