Portfolio · INP & interaction latency · 10 engagements · 2024 to today

A quarter-second of nothing.

On March 12, 2024, Interaction to Next Paint replaced First Input Delay as the Core Web Vitals responsiveness metric. INP is the latency of the slowest taps your real visitors make, at the 75th percentile of pages. Good is 200 ms or less. Every engagement on this ruler is field data: CrUX, Search Console, or RUM the client could re-run.

Interaction latency, mobile field data · ms

Top bar red: before. Bottom bar green: after. Shaded area is the failing zone above 200 ms. Outcomes recorded as "green" are Search Console-validated under the threshold and drawn just inside it.

Where a tap goes to die.

INP is one number covering three separate stalls. Every fix on this page is an attack on one of them.

  1. 01

    Input delay

    The browser is busy when the tap lands, so it queues the event. Tag-manager containers and event-tracking scripts are the usual suspects: one publisher's GTM held the main thread for 440 ms at load.

  2. 02

    Processing delay

    The event handlers themselves run slowly. Cloudflare Rocket Loader's document-level handlers cost ~130 ms of a 189 ms frame on termly.io, on every click and tap, while making the lab score look better.

  3. 03

    Presentation delay

    The handler finished, but the next frame waits on style, layout, or paint. Long tasks and render-heavy widgets (a reviews widget pushed some pages past 500 ms) show up here.

03 · 6 opened cases · freeze cause on the left, shipped fix on the right

Six freezes, opened up.

No before-and-after screenshots here. Interaction latency does not screenshot well: it is measured in real visitors' browsers, so each case below is the measurement, the cause it pointed to, and the fix that moved it.

CASE 01

bolde.com (Sweetn)

Relationship and lifestyle media · WordPress

Feb 2026 · green in six weeks

INP green Mar 1, 2026

GSC-validated · CLS followed nine days earlier

Freeze cause · measured

Tag-manager container blocking the main thread for 440 ms at load. Every headline tap queued behind marketing scripts.

Fix · shipped

GTM diet: stale marketing scripts pulled out of the critical path; DebugBear RUM installed so regressions surface in hours.

Freeze cause · measured

Ad-refresh scripts re-freezing the page mid-read, a 118 ms stall every few seconds while people read.

Fix · shipped

Raptive/AdThrive ads moved to delayed loading; the recurring freezes ended with the refresh timing.

"Excellent work! We hired Milan to improve our core web vitals. He was super efficient and did an amazing job!"
— Sweetn · Upwork 5.0

CASE 02

EmbassyPages

Embassy-info directory · WordPress

Aug 2023 – Mar 2024 · ahead of the INP rollout

Elements 400-700 → 150-200 ms

Rocket Loader caught adding ~306 ms

Freeze cause · measured

Cloudflare Rocket Loader, a tool that exists to speed sites up, was adding ~306 ms of interaction latency on its own.

Fix · shipped

Removed. A redesigned template re-measured 264 ms over 7 days while the follow-up work landed.

Freeze cause · measured

Country-page interactions (menu, expanders) taking 400-700 ms on real visits, tracked in the client's own RUM data.

Fix · shipped

JavaScript dependency reduction across templates; the same elements measured 150-200 ms after.

"Excellent reduction of JavaScript dependency on website, effectively reducing our INP drastically. Milan is highly recommended!"
— CPH · Upwork 5.0

CASE 03

termly.io

Cookie-consent SaaS · own WordPress site

Apr – Jul 2026

CLS and INP green, GSC-validated

July 2026 · 20 French template URLs

Freeze cause · measured

Rocket Loader again: DebugBear LoAF attribution showed its document-level handlers costing ~130 ms of a 189 ms slow frame, on every click and tap.

Fix · shipped

Rocket Loader dropped site-wide; the client advised to keep it off despite the friendlier lab score it produces.

Freeze cause · measured

A 208 ms GSC INP group, split between input delay and presentation delay, concentrated on translated template URLs.

Fix · shipped

Input-delay fixes in the tag-manager path plus CSS presentation-delay work; the whole group validated green.

CASE 04

farmhousefreshgoods.com

Skincare and bath e-commerce · Shopify

Oct – Dec 2024

497 → ~180 ms site average

No page left in the red by Dec 5

Freeze cause · measured

Site-wide mobile INP of 497 ms: app and theme JavaScript fighting for the main thread on every collection and product page.

Fix · shipped

Shopify theme/app JavaScript diet with per-template triage; stragglers around 250 ms chased individually.

CASE 05

biospherenutrition.co.nz

Supplements DTC · Shopify

May 2024 – 2026 · recurring checkups

Under 200 → 165 ms, held for years

169 ms within three weeks of starting

Freeze cause · measured

Third-party JavaScript overhead pushing interaction latency past the 200 ms threshold on mobile.

Fix · shipped

Third-party diet, then scheduled checkups; when product pages drifted back over 200 ms in 2025, the remaining contributors were already mapped.

CASE 06

planergy.com

Procurement SaaS · WordPress (via Awesome Creative)

Mar – Jun 2024 · contract titled "Fix Google Core Web Vitals - INP"

206-209 → 199 ms, then sub-200 average

Field data, May 2024

Freeze cause · measured

The slowest interactions on the site were its own navigation: menu and search taps, with page INP idling at 206-209 ms.

Fix · shipped

Tap-path rework and a JavaScript diet aimed at interaction latency rather than the 0-100 score; 199 ms by May 3, under 200 as the rolling average settled.

"Milan was phenomenal! He was always fast, prompt, and took the time to explain everything he did, ensuring we understood how his changes would influence our page speed. I couldn't recommend him more!"
— Awesome Creative (agency) · Upwork 5.0

From the field log.

  • NOTE 01

    euvelle.com / tillybare.com

    A recurring Shopify client on a contract titled, simply, "INP fix". Nearly all euvelle.com traffic lands on one product page; tap-latency spikes cleared (28-day mobile average 168 ms, 152 ms within hours of the first fix), then the same treatment ported to sister brand tillybare.com.

  • NOTE 02

    wonderstory.es

    Lab scores green, field INP 213 ms. Event-tracking marketing scripts, a chat widget, and an Elfsight reviews widget (worst pages over 500 ms) fought for the main thread. Scripts pruned, chat delayed, widget replacement scoped for the studio's developer.

  • NOTE 03

    The 99-score paradox

    A site owner with a 99-100 PageSpeed score and failing INP, weeks before the 2024 rollout. The cause: every script delayed past load, which aces the lab test and freezes the first real tap. Delay is not optimization; it is procrastination with extra steps.

  • NOTE 04

    re-fabbed.com (lab cousin)

    Total blocking time 4,090 → 60 ms on a WordPress blog. TBT is the lab sibling of INP: the same long tasks that block rendering also freeze the first interaction. Cleared years before INP became a Core Web Vital.

The latency ledger.

EngagementStackINP beforeINP afterWindowEvidence
bolde.comWordPress257 msgreen, GSC-validatedFeb – Mar 2026CrUX + GSC · public feedback 5.0
embassypages.comWordPress400-700 ms elements150-200 ms elements2023 – Mar 2024Client RUM · public feedback 5.0
termly.ioWordPress208 ms groupgreen, GSC-validatedApr – Jul 2026GSC + DebugBear LoAF
farmhousefreshgoods.comShopify497 ms~180 ms averageOct – Dec 2024CrUX mobile
biospherenutrition.co.nzShopify>200 ms165 ms, held2024 – 2026CrUX · public feedback 5.0
planergy.comWordPress209 ms199 ms → sub-200 avgMar – Jun 2024Field data · public feedback 5.0
euvelle.com / tillybare.comShopify200 ms+ page spikes152 ms averageNov 2025 – 2026CrUX · contract active
wonderstory.esWordPress213 ms averagefixes shipped, re-check pendingJul 2025CrUX · project records
re-fabbed.comWordPress4,090 ms TBT60 ms TBT2020PageSpeed report
menlau.comShopify257 URLs failing12 pending2024GSC · project records

All numbers mobile field data (CrUX, Search Console, or client RUM) except re-fabbed.com, a 2020 PageSpeed lab report. Dates from the engagements themselves; quotes from public Upwork feedback; case narratives paraphrased from project records, never pasted from private correspondence.

Your freeze belongs on this ruler.

Free audit: I will tap what your visitors tap, measure what blocks it, and tell you honestly whether it is fixable.

Get a free audit