Find what's blocking your main thread and slowing down interactions.
INP measures how quickly your page responds to user interactions like clicks, taps, and keyboard input. It captures the worst interaction latency during a page visit, reporting when the browser finally paints a response. Google replaced FID with INP as a Core Web Vital in March 2024.
Since INP requires real user interactions, lab tools like Lighthouse use Total Blocking Time (TBT) as a proxy. TBT measures how long the main thread was blocked by long tasks during page load—a strong predictor of poor INP.
JavaScript executing for >50ms blocks the main thread. Break up work with requestIdleCallback or scheduler.yield().
Analytics, chat widgets, and ads often block the main thread. Load them async or use Partytown to run in a web worker.
Framework hydration can block interactions. Use progressive hydration, islands architecture, or server components.
Too many DOM nodes slow down style calculations and layout. Keep nodes under 1,500 and virtualize long lists.
Reading and writing layout properties in a loop forces synchronous reflows. Batch DOM reads and writes.
Large JavaScript bundles take longer to parse and execute. Use code splitting, tree shaking, and lazy loading.