Core Web Vitals 2026: INP replaced FID, what changed
INP (Interaction to Next Paint) became the Core Web Vital in March 2024, replacing FID. Targets are stricter (good = ≤200ms vs FID ≤100ms). Here's how to audit and fix INP regressions.
INP measures the latency between any user interaction (tap, click, key press) and the next visual update. Unlike its predecessor FID, which only sampled the first input, INP tracks all interactions and reports the 98th percentile. That makes it harder to game and more reflective of real-world feel.
Thresholds
- Good: ≤200ms
- Needs improvement: 200–500ms
- Poor: >500ms
Common INP killers
The biggest offenders we see in audits: third-party tag managers (GTM, Segment) loading sync; React event handlers with synchronous state cascades that block rendering; expensive DOM measurements (getBoundingClientRect) inside scroll/resize listeners without rAF batching; large input event handlers that trigger virtual-DOM reconciliation across the whole tree.
How to fix
- Profile in DevTools Performance tab — record an interaction, look for long tasks >50ms.
- Move heavy work off the main thread:
scheduler.yield(), requestIdleCallback, web workers. - Defer third-party scripts. Use
<script async>+ tag-manager loading on user interaction, not on page load. - Use React 19's
useTransitionoruseDeferredValueto keep input responsive even during expensive renders. - Audit autocomplete/search inputs — they are frequent INP culprits because every keystroke triggers a query.
Auditope runs Lighthouse with throttled CPU and reports INP per page. Run it before and after each performance fix to verify the regression is gone.
Want this kind of analysis on your own site?
Run a free audit →