Partytown in 2026: Sandbox Third-Party Scripts in a Web Worker and Save Your INP
Move GTM, GA4, and Meta Pixel into a web worker with Partytown. Real INP numbers, framework setup, dataLayer forwarding, and the caveats that break analytics.
Move GTM, GA4, and Meta Pixel into a web worker with Partytown. Real INP numbers, framework setup, dataLayer forwarding, and the caveats that break analytics.
The NotRestoredReasons API is how you learn, per real user navigation, why Chrome refused to restore your page from bfcache. Here's the RUM snippet I ship in production, the full 2026 blocker list, and how to fix each one.
Learn how to optimize First Contentful Paint below 1.8s at p75. Covers TTFB reduction, render-blocking CSS, web fonts, 103 Early Hints, and Speculation Rules prerender with production code.
Understand every value of the CSS contain property (layout, paint, size, strict, content) with 2026 browser support notes, DevTools workflow, and real-world INP wins.
How CDN cache tags and surrogate keys work in 2026: headers, purge APIs, and stale-while-revalidate pairing on Fastly, Cloudflare, Vercel, Netlify, and Akamai.
Cross-origin resources report zero for duration, transferSize, and every phase timing unless the server emits Timing-Allow-Origin. Set it correctly on CDN, S3, or your API to unlock full Resource Timing and honest RUM data.
A third-party script facade is a static placeholder that loads no third-party JavaScript until the user interacts with it. In field data, swapping a YouTube iframe for a facade cuts LCP by 40% on mobile 4G. Here is the 2026 pattern for YouTube, Twitter, Maps, and chat widgets.
How to use native loading="lazy" for images and iframes without breaking LCP. Covers Chrome 2026 heuristics, fetchpriority combos, iframe deferral, CLS prevention, and SEO.
The Chrome DevTools Performance Insights sidebar diagnoses Core Web Vitals from a single trace. Here's how to record the right trace, read the LCP/INP/CLS subpart breakdowns, and use Live Metrics to catch regressions without leaving the panel.
Learn how the No-Vary-Search response header lets Chrome 141 reuse prefetches and disk cache entries across utm_ and other query parameters, with copy-paste recipes and debugging tips.
A passive event listener promises the browser you won't call preventDefault(), so the compositor thread can scroll immediately without waiting for JavaScript. Here's how I audit and fix the third-party offenders that still ship blocking touchstart and wheel handlers in 2026.
The fetchLater() API queues an HTTP request that the browser fires on bfcache entry, page hide, or a timeout, plugging the reliability gaps that make sendBeacon drop 5-15% of your RUM data on mobile.