← Back to blogPerformance

Optimising INP: the new speed metric that 43% of sites fail

Interaction to Next Paint (INP) replaced FID as the responsiveness metric in 2024. Two years later, 43% of all sites fail the 200ms threshold, and Google has weighted performance more heavily since the March 2026 update. Time to take INP seriously.

INP measures how quickly your site responds to every user interaction, not just the first click like FID did. Click a button, open a menu, type in a form: the time between that action and the next paint must stay under 200 milliseconds for a good score. The "poor" threshold starts at 500ms.

Why do 43% of sites fail?

Because INP, unlike LCP, can't be solved with better images or CDN caching. It's a JavaScript architecture problem. Every long task that blocks the main thread (third-party scripts, hydration, framework overhead, expensive event handlers) counts. Rendering slot machines you don't see but do feel.

Five concrete fixes

1. Split long tasks

A function that blocks 300ms blocks INP for 300ms. Split them with `await scheduler.yield()` (Chrome 129+) or `setTimeout(fn, 0)`. The browser gets breathing room to handle events in between.

2. Lazy-load third-party scripts

Analytics, chat widgets, A/B test tools, social embeds, they will break INP. Load them with `defer`, `strategy="lazyOnload"` (Next.js), or only after user consent. A chat widget that blocks 250ms costs you more than it returns in 80% of cases.

3. Reduce client-side JavaScript

Server rendering via Next.js, Astro or Remix moves work to the server. Less JS in the bundle = less hydration = fewer INP stalls. React Server Components were built specifically for this.

4. Optimise event handlers

An onChange handler that fetches on every keystroke, or an onScroll that triggers a layout recalc every frame, both INP killers. Debounce, throttle, or use `requestIdleCallback`.

5. Measure field data, not lab data

Lighthouse measures INP synthetically in a simulation. Real users are a different story. Use Chrome User Experience Report (CrUX) or the Performance Observer API to see real-user metrics. That's what Google uses.

When is INP a priority?

Always, but especially if you have an SPA, use a lot of third-party scripts, or have a complex form flow. Brochure sites with static pages hit INP easily; e-commerce checkouts and SaaS dashboards often leak.

Share this article

Rather talk to a specialist?

Book a free growth call. No sales pitch, just concrete action points.