Long Animation Frame (LoAF) frame (210 ms) script: checkou… style + layout 210 ms An API reporting frames that took over 50 ms with the scripts responsible, sources and durations: attribution for INP.
in practice PerformanceObserver for long-animation-frame entries; script URLs and function names in RUM.
Critical rendering path HTML CSS (… rende… layout paint The sequence from HTML to first paint: HTML, CSS, render-blocking scripts, render tree, layout, paint; shortening it speeds first render.
in practice Inlining critical CSS, deferring scripts, preloading the LCP resource.
Main-thread work Scripting 1,840 ms Rendering (style, layout) 420 ms Painting 120 ms Idle … Time the main thread spends on script, style, layout and paint; the budget input and interactions compete for.
in practice Lighthouse's "Minimize main-thread work" breakdown; the Summary tab in a trace.
Third-party cost your app tag manager chat widget analytics 300 ms main thread The performance cost of scripts from other origins (tags, chat, analytics, ads): connections, bytes and main-thread time you do not control.
in practice Lighthouse third-party summary; facades for chat widgets; loading tags after interaction.
Facade static previ… 3 KB user clicks load real wi… 600 KB A lightweight placeholder that looks like a heavy embed (video player, chat widget) and loads the real thing on interaction.
in practice lite-youtube-embed; "Chat with us" buttons that load the SDK on click.
Back/forward cache eligible back = instant state preserved pageshow persisted blocked unload listener no-store, open WS full reload Keeping a page's full state in memory on navigation away, so back and forward restore it instantly.
in practice unload handlers and Cache-Control: no-store making pages ineligible; the bfcache test in DevTools Application.
Speculation Rules <script type="speculationrules"> { "prerender": [{ "where": { "href_matches": "/product/*" }, "eagerness": "moderate" }] } </script> A JSON script telling the browser to prefetch or prerender likely next pages, so navigation is near-instant.
in practice <script type="speculationrules"> with eagerness settings; prerendered product pages from a listing.
Hydration cost HTML visible JS download hydrate (blocki… interactive 440 ms The main-thread time to download, parse and run the framework and component code that re-renders server HTML on the client.
in practice TBT and INP spikes after load; islands, partial hydration, Server Components and resumability reduce it.
Image CDN /hero.jpg?w=… image CDN resize, AVIF 42 KB cached at edge A service that resizes, recompresses and reformats images on the fly per request (width, AVIF/WebP, quality).
in practice URL parameters like ?w=800&fm=avif; responsive srcsets without storing every variant.
Resource hints summary dns-prefetch DNS only preconnect DNS + TCP + TLS preload fetch now, high modulepreload fetch + parse module prefetch next page, low dns-prefetch, preconnect, preload, modulepreload, prefetch and prerender: telling the browser about work before it discovers it.
in practice One preconnect per critical third-party origin; preload only what is critical; prefetch for next pages.
Bundle budget Jan Mar May budget 205 KB entry the gate fails in May A byte limit per chunk (compressed) enforced in CI, so JavaScript cannot grow unnoticed.
in practice size-limit, bundlesize; the 2 KB a day slow rot.
Performance regression 4.16 4.17 4.18 4.19 (fix) 340 ms INP p75 A measurable worsening of a metric tied to a change, found in the lab gate, the ring comparison, or the field trend.
in practice An alert cut by route, tier and release; the release diff as the suspect list.