Google's Core Web Vitals updated again this year, replacing FID with INP as a core metric. If you've been optimizing for the old set, it's time to recalibrate.
INP Changes Everything
Interaction to Next Paint measures all interactions, not just the first. This means long JavaScript tasks that block the main thread are now penalized across the entire page lifecycle.
The Low-Hanging Fruit
- Font loading:
font-display: swap+ preload. Still the #1 CLS offender I see in audits. - Third-party scripts: Defer everything. If it's not critical rendering, it can wait.
- Images: Use
<picture>with AVIF → WebP → JPEG fallback. Serve responsive sizes.
The biggest wins are almost never in your JavaScript bundle size. They're in how you load resources, not how much you ship.