Interaction to Next Paint (INP)
Also known as: INP, interaction to next paint
INP is a Core Web Vitals metric that measures the responsiveness of a page across its entire session. INP captures the longest delay between a user interaction (click, tap, key press) and the next paint that visually responds to it. INP replaced First Input Delay (FID) as a Core Web Vital in March 2024. The threshold for 'Good' is ≤ 200ms; 'Needs Improvement' is 200–500ms; 'Poor' is > 500ms.
Why INP replaced FID
FID (First Input Delay) only measured the delay on the FIRST interaction on a page. INP measures the WORST interaction across the entire session — much more representative of actual user experience.
The replacement happened in March 2024. Sites that comfortably passed FID often fail INP because the metric captures interactions throughout the session, not just the first one.
What INP measures (precisely)
For each interaction, INP measures:
- Input delay — time from input event to JavaScript handler starting
- Processing time — time the handler takes to execute
- Presentation delay — time from handler completion to next paint
The reported INP is the longest of all interactions on the page (with statistical adjustment for outliers on long-running pages).
Why INP is hard
JavaScript-heavy sites (React SPAs, hybrid SSR/CSR) accumulate long-task work that triggers when users interact. Common patterns that hurt INP:
- Heavy React rerenders triggered by click handlers
- Third-party analytics / chat / A/B testing scripts firing on click
- Synchronous expensive work in event handlers
- Long animations that block paint
Optimization tactics
In rough order of impact:
- Break up long tasks — anything over 50ms on the main thread is a flag. Use
requestIdleCallback,setTimeout, or yielding patterns - Audit third-party scripts — analytics, A/B testing, chat widgets are common culprits
- Move work off the main thread — Web Workers for heavy computation
- Defer non-critical interactions — don’t process all click logic synchronously
- Lazy-hydrate — hydrate React components incrementally rather than all at once
- Avoid
useLayoutEffectin click handlers — forces synchronous paint
INP in mobile vs desktop
INP threshold is the same (200ms) but mobile devices typically run 4-6× slower than desktop. Most INP failures occur on mid-range Android devices, not on developer MacBooks. Always test with throttled CPU simulation.
Measurement
- CrUX data — 28-day rolling real-user INP; what Google ranking actually uses
- Web Vitals JavaScript library — measures INP in real-user-monitoring (RUM) for your site
- Chrome DevTools Performance panel — surfaces individual long interactions for debugging
Resocial perspective
INP is the Core Web Vital we see fail most often in 2026 audits. Sites that passed CWV under the FID regime frequently regress when re-evaluated against INP. Our Technical SEO service runs INP monitoring nightly and treats regressions as P1 tickets — a 200ms INP failure can cost the page its Core Web Vitals pass status.
- Resocial service →
/services/seo/technical-seo/ - Read on the blog →
/blog/technical-seo-complete-guide/