Why INP buried FID — and why your old score was lying
Interaction to Next Paint (INP) optimization stopped being optional the moment Google promoted it to an official Core Web Vital in March 2024, retiring First Input Delay (FID) in the process. This was not a rebrand. FID only clocked the delay before the browser started handling your very first interaction. INP measures the whole latency of an interaction — from the tap to the frame that finally shows a response — and it does so across the entire lifetime of the page.
Translation: a site could post a gorgeous FID and still feel like wading through wet concrete every time someone opened a menu, toggled a filter, or hit "add to cart." INP kills that blind spot. It keeps, roughly, the worst interaction a visitor throws at your page, which is exactly why "smooth on load, sticky in use" designs now get punished.
The thresholds are your compass, and they are blunt:
- ≤ 200 ms — good (the interface feels instant);
- 200 to 500 ms — needs work (the lag is starting to register);
- > 500 ms — poor (the user genuinely doubts the click landed).
These are read at the 75th percentile of your real visitors. Chasing the average is a trap: you have to fix the long tail of your slowest interactions, which almost always live on mid-range mobile hardware, not on your dev machine.
The three phases of an interaction — where the lag is born
To fix INP you have to stop treating the score as one opaque number and split it. Every interaction runs in three beats:
- Input delay — the window where the browser is busy (usually with JavaScript still executing) and can't even start handling your click.
- Processing time — your event handlers doing their thing: the code that reacts to the click, mutates state, recomputes a cart.
- Presentation delay — the time the browser needs to recalculate layout and repaint the screen to actually show the result.
An example beats a diagram. A user hits "Filter." A third-party analytics script is still running, so the click waits in line (input delay). Your function then loops over 2,000 product records to filter client-side (processing time). Finally the browser re-renders a massive grid of cards (presentation delay). Three lags stack, and INP captures all of them.
This three-phase read is the whole diagnostic. The culprit phase decides the fix. High input delay points at bloated startup JavaScript. High processing time points at your own handlers. High presentation delay points at an oversized DOM or expensive styles. Anyone who "just optimizes INP" without knowing which phase is bleeding is guessing.
The design decisions that quietly torch your INP
Here is the part almost nobody writes about: a lot of INP damage is authored at design time, not just in code. Below is a triage table linking concrete build decisions to their likely cost and to whoever is best placed to fix them — because "who owns this" matters as much as "how bad is it."
| Design / build decision | INP phase hit | Likely cost | Fix owner |
|---|---|---|---|
| JS-driven animation on every click (parallax, morphing) | Presentation | High | Designer (switch to CSS transform) |
| Menu or filter that rehydrates a heavy component | Processing | High | Developer |
| 4+ third-party scripts (chat, A/B, tags) loaded at startup | Input | High | Designer + dev (kill what isn't essential) |
| Giant DOM (unpaginated lists, hundred-row tables) | Presentation | Medium–high | Developer (virtualize) |
| Synchronous handler that recomputes the whole state | Processing | Medium | Developer |
| Render-blocking web fonts + relayout on load | Presentation | Medium | Designer (font-display strategy) |
| Decorative micro-interactions with no perceived payoff | Presentation | Low–medium | Designer (aesthetic trade-off) |
The "fix owner" column is not filler. A serious slice of INP problems is settled upstream by a designer's call — compositing an animation in pure CSS (which the browser can paint without ever touching the main thread) instead of scripting it in JavaScript, or dropping a spectacular-but-costly effect on a high-traffic page. And yes: on a neon-soaked, glitch-and-scanline aesthetic like ours, stacked backdrop-filter blur and heavy shadows are exactly the kind of "cheap-looking, expensive-running" effect that inflates presentation delay. Style is not the enemy; unbudgeted style is. These calls follow the same logic as the interaction and perception laws we dissect on the UX desk: an interface is judged in use, not on the first screen.
Fixing INP without gutting the design: the 5-step method
Optimizing INP does not mean sanding your design down to a wireframe. It's triage, not amputation:
- Start from field data. Find the pages and interactions that are genuinely slow for your visitors — not lab hunches. You only fix well what you've actually measured.
- Isolate the single slowest interaction per page. INP keeps the worst case, so nailing that worst case is most of the score. Don't polish a button already sitting at 90 ms.
- Break up long tasks. Any JavaScript task over 50 ms blocks the main thread. Chunk the work, yield back to the browser between batches, and paint a visible response (a "loading" state) before you finish the heavy compute.
- Defer the non-essential. Chat widgets, A/B tests, marketing tags — load them after interactivity, never before. Every script you pull off startup shaves input delay from every early interaction.
- Trim the DOM and the repaint. Paginate or virtualize long lists, avoid cascading layout recalculations, and lean on CSS properties the browser can composite without a relayout.
The through-line: hand control back to the browser as often as possible. A user forgives a one-second load far more readily than an interface that seems to ignore the click entirely. That responsiveness bar is exactly what buyers weigh when they compare vendors — a point we break down in our ranking of the best web design agencies, where raw technical performance splits sites whose visuals are otherwise a dead heat.
Measuring INP: the field doesn't lie, the lab does
The most common mistake is grading INP with a lab tool — a one-off audit under simulated conditions. But INP is a field signal: it aggregates real interactions, from real users, on their real devices and networks. A lab test can fake a click; it cannot reproduce a visitor who opens a menu, types into a field, then filters a list on a mid-range phone choked with thirty open tabs.
So you run two complementary instruments:
- Field data — real-world usage, the only source that feeds the official score at the 75th percentile. This is your judge.
- The lab — where you reproduce and debug a specific interaction the field flagged, profiling the main thread to see which task is blocking (the Long Animation Frames API is your friend here).
The correct order is sequential: the field tells you where it hurts, the lab tells you why. Flip that order and you're blind-optimizing interactions nobody triggers.
And INP never travels alone. It sits inside a bundle of technical signals that shape ranking and, increasingly, how both classic search and generative answer engines rate a page. Before a redesign, cross-check it: a full technical audit of your Core Web Vitals and SEO sets the priorities straight, while a check of how AI answer engines actually see your pages surfaces a channel most dashboards still ignore. A fast design is only worth something if it also gets found.
FAQ
Has INP really replaced FID everywhere?
Yes. Since March 2024, INP is the official Core Web Vital for responsiveness and FID has been retired. Any old dashboard still showing FID is reporting a metric Google no longer uses to judge interactivity.
Which threshold should I target first?
An INP of 200 ms or under at the 75th percentile counts as good. Between 200 and 500 ms there's room to improve; past 500 ms the interface reads as sluggish, hurting both experience and, potentially, ranking.
Does a bold design automatically mean bad INP?
No. The conflict isn't aesthetics versus performance — it's expensive effects versus well-built effects. A CSS-composited animation, progressive loading, and a lean DOM let you ship an ambitious design with excellent INP. The problem is almost always the implementation, not the intent.
Where do I start on an existing site?
With field data: find the slowest page and interaction, reproduce them in the lab to identify the blocking task, then run the five-step method. Fixing one critical interaction usually moves the score far more than a dozen scattered micro-tweaks.