What is INP and how to tell whether a site responds quickly to user actions

FrontendPerformanceCore Web VitalsJavaScriptWeb

INP (Interaction to Next Paint) shows how quickly a page responds to a user action. It is one of the Core Web Vitals and helps you understand the real responsiveness of the interface in the browser

Hook

INP is often confused with generic “site speed”, but it is more specific than that. A page can load quickly and still feel sluggish if a button reacts late or a form input lags. That is exactly the kind of experience INP tries to measure: how quickly the interface shows a visible response after a real user action.

For a developer, that is useful because it measures not only whether the page loaded, but whether the interface truly responds to clicks, typing, and other interactions. For product teams, it matters too: slow feedback can hurt trust even when Lighthouse scores look acceptable.

So INP is best read as a practical signal about felt latency, not as an abstract score. If the UI feels sticky, INP helps you find where the delay is introduced.

What INP actually means

INP stands for Interaction to Next Paint. In plain language, it measures how quickly the interface shows a visible response after a user action.

Imagine a user:

  • clicks a button;
  • types a character into a field;
  • opens a menu;
  • switches a filter;
  • drags an item in a drag-and-drop interface.

INP looks at the whole path from that action to the moment the browser has drawn the next visual update. That means the important part is not only event handling, but also when the user actually sees the result.

This makes INP especially useful for measuring responsiveness when the UI relies on a lot of JavaScript or expensive re-rendering.

Where beginners usually get it wrong

Mistake 1: confusing INP with page load time

A page can open quickly and still react poorly after load. INP is about the interaction that happens after the page is already usable.

Mistake 2: assuming it is only about network latency

Sometimes the delay is not caused by an API call at all. The real problem may be long JavaScript execution or a blocked main thread.

Mistake 3: looking only at the framework

The framework may influence the symptom, but the root cause is often a specific handler, a large list, an expensive state update, or an unnecessary render.

Mistake 4: trusting only lab tests

INP is more useful when you read it together with field data. Lab tests run in controlled conditions, but real users may have slower devices, other tabs, or a different browser.

How INP works in practice

A simplified flow looks like this:

  1. The user performs an interaction in the interface.
  2. The browser receives the event and queues its handling.
  3. JavaScript, layout, or another long task may delay the response.
  4. After processing, the browser paints the next frame.
  5. INP measures how long that cycle took for the interaction.

In practice, that helps you see whether the interface:

  • spends too much time on the main thread;
  • re-renders too much UI;
  • runs expensive calculations synchronously;
  • gets blocked by layout or style recalculation;
  • waits for extra state updates before painting.

What “slow INP” feels like

INP is not about “everything is slow”; it is about the user feeling that the interface does not respond quickly enough.

In real use, it can look like this:

  • a button is clicked, but nothing appears to happen right away;
  • text input appears with a delay;
  • a menu opens late;
  • a filter list freezes after a click;
  • mobile interaction feels worse than desktop.

For a user, that feels like the interface is not responding. That is why INP is so tightly connected to UX.

How to improve INP without magic

Practical steps:

  1. Find the slowest interaction.
  2. Check whether a big synchronous task blocks the main thread.
  3. Reduce the work done in the event handler.
  4. Split heavy computation into smaller pieces.
  5. Avoid re-rendering more UI than needed.
  6. See whether non-urgent updates can be deferred.
  7. Optimize large lists, filters, and complex components.
  8. Test the interaction on a slower device.

INP usually improves not because of one magic trick, but because you reduce the amount of work the browser must do synchronously before the next paint.

What to inspect in a real project

When you review INP in your project, walk through this list:

  • which interaction has the worst response;
  • whether there are long tasks on the main thread during that action;
  • whether the handler triggers heavy synchronous work;
  • whether too much of the page re-renders;
  • whether there is a difference between desktop and mobile;
  • whether the problem appears in field data;
  • whether you are confusing INP with LCP, TTFB, or CLS;
  • whether simplifying the UI or deferring state updates helps.

If you use React, Vue, Svelte, or another framework, also check:

  • whether every input triggers an unnecessary re-render;
  • whether a component keeps large arrays in memory without need;
  • whether the visual update pulls in too much synchronous logic;
  • whether some of the work can move out of the interaction path.

Bottom line

INP shows how quickly a site responds to real user actions. It is not just a technical metric; it is a very practical signal about interface quality.

If a user clicks a button, types text, or opens a menu and sees a delay, INP helps you find where the responsiveness is being lost. For beginners, the simple rule is: do not look only at page load. Also look at how quickly the interface reacts to each action.

Quick checklist

  • Check whether the slow part is the interaction, not the initial page load.
  • Find the longest tasks on the main thread during the problematic action.
  • See whether heavy JavaScript or a large re-render blocks the UI.
  • Check whether style recalculation or layout is causing the delay.
  • Test separately on a mobile device and a slower CPU.
  • Distinguish INP from LCP, TTFB, and CLS.
  • Confirm the issue appears in field data, not only in a lab test.
  • Check whether simplifying the handler, splitting work, or deferring UI updates helps.

Prompt Pack: explain INP for practical frontend responsiveness checks

Help me understand INP for a frontend project or web app. Inputs: - product type: site, SPA, SSR app, dashboard, e-commerce app, or another web UI; - where the issue appears: button, form, menu, filter, modal, search, drag-and-drop; - interaction type: click, tap, input, keyboard, hover, gesture; - what seems slow: JavaScript task, rendering, style recalculation, network wait, main-thread contention; - what analysis is available: field data, lab data, Performance panel, RUM, Lighthouse, Web Vitals; - stack: React, Next.js, Vue, Svelte, plain JS, or another one; - UX requirements: low-end device, mobile, accessibility, animation, typing latency. Return: 1. a short explanation of INP in this case; 2. what the user feels when the delay happens; 3. where to look for the cause in code or rendering; 4. the mistakes people commonly confuse with INP; 5. how to reduce latency without over-optimizing; 6. a short checklist for a real project review. Format: overview, user impact, where to inspect, common mistakes, safe improvements, verification checklist.