INP — Interactivity

Poor INP —
Third-Party Scripts

Tag Manager, chat widgets, and trackers are making every click feel broken.

Where to find it: Chrome DevTools > Performance Panel > Main Thread > Third-Party Script Activity > Long Tasks

What It Is

INP — Interaction to Next Paint — measures the time between a user interaction (click, tap, keystroke) and the browser's visual response. Google's target is under 200ms. Third-party scripts — Google Tag Manager containers, chat widgets, A/B testing tools, ad scripts, marketing pixels, and analytics libraries — all execute on the browser's main thread. When they're executing, the main thread is blocked and can't respond to user interactions. Each script adds to the total blocking time, and sites with 8–15 active third-party scripts can accumulate hundreds of milliseconds of blocked interaction time.

Why It Matters

INP replaced FID as a Core Web Vitals metric in 2024 because it measures the full responsiveness of a page across all interactions — not just the first one. Third-party scripts are the most common cause of INP failures on real-world sites, and they're also the most politically sensitive fix: telling a client to remove their analytics or live chat can push back quickly. This episode gives you the data and the argument to make the case — and the technical fixes that minimize impact without requiring removal.

Root Diagnostics

Common Causes

Understanding why this failure occurs is the first step to fixing it permanently.

01

Too Many Tag Manager Tags

Google Tag Manager is loading 10–20 tags that each execute scripts on the main thread. Individually each is small, but cumulatively they block the main thread for hundreds of milliseconds.

02

Chat Widget Loading at Page Start

Live chat widgets like Intercom, Drift, and HubSpot chat load their full JavaScript bundle immediately — often 100–300KB of script execution that runs before the page is interactive.

03

A/B Testing Scripts Synchronous

A/B testing tools like Optimizely and VWO load synchronously to prevent content flicker. This is by design, but it means they execute on the main thread before the page renders — contributing significantly to INP blocking time.

04

Scripts Not Deferred

Third-party scripts are loaded with plain <script> tags without async or defer attributes, meaning they block HTML parsing and main thread execution until they fully download and run.

Interactive Standard Operating Procedure

The Fix Blueprint (Interactive SOP)

Check off each step to monitor your implementation progress live!

Implementation Progress: 0% Completed (0/7)

Tools

  • Chrome DevTools Performance Panel
    Free | Record interactions to measure INP and identify which third-party scripts are causing long tasks on the main thread
  • WebPageTest
    Free (webpagetest.org) | Third-party summary report shows every external script, its size, and blocking time contribution
  • Request Map (requestmap.webperf.tools)
    Free | Visualizes all third-party script connections from a page — useful for presenting the problem to clients

Time to Fix

1–2 hours
To audit all third-party scripts and long tasks
Hours to Days
Deferral (fast) | Chat delay (hours) | GTM audit (hours)

Pro Tip

Show the client the script waterfall — the visual wins the argument.

When a client pushes back on removing their chat widget or consolidating pixels, pull up the WebPageTest third-party report or RequestMap visualization. Seeing 15 external domains loading scripts on their homepage — many of which they've forgotten about — immediately reframes the conversation from 'you want to remove our tools' to 'we have scripts running that nobody remembers installing.' The data makes the case.