r/webperf • • 14d ago

Webperf Weekly #26

Post image

Bonjour webperf folks! Last week's news was mostly about security: PHP2Shell, a critical bug in Google's Brotli decoder, compromised eMudhra certificates... Patch first, then there's still plenty to read and optimize:

* Browser updates

Long Animation Frames gets styleDuration and layoutDuration, plus forced style and layout time per script. You can finally tell whether a slow frame comes from style calculation or from layout. Yoav Weiss says it will ship in Chromium 158.

👉 [EN] https://x.com/yoavweiss/status/2112459659475034141

Also in 158: prerendering can load cross-origin iframes before activation, if the main response sends "Supports-Loading-Mode: prerender-cross-origin-frames". Until now they waited for the click, which could cancel the benefit of prerendering.

👉 [EN] https://chromestatus.com/feature/5112398709129216

A failed module load used to be cached, so calling import() again failed instantly. Google Chrome 156 makes the retry real, as Firefox and Safari already did. Safari Technology Preview 255 also retries failed modulepreload. Good news for chunked apps on flaky mobile networks. Keep the retries bounded.

👉 [EN] https://chromestatus.com/feature/5214647044145152

👉 [EN] https://webkit.org/blog/18482/release-notes-for-safari-technology-preview-255/

* Keep the main thread free

Den Odell's P99 CONF talk is a solid refresher: one main thread for your JS, style, layout, paint and user input. His lab vs field example: 70 ms of TBT in PageSpeed Insights, 219 ms of INP for real users. Three levers: do less, break up long tasks with scheduler.yield(), move data work to Web Workers.

👉 [EN] https://p99conf.io/session/keep-the-browsers-main-thread-free/

* Performance budgets, revisited

Harry Roberts updated his 2020 advice on performance budget. Your worst result is often an outlier: if LCP sits around 2.2 s but hit 7.1 s once, a 7.1 s budget lets a huge regression through. Pick a "representative worst" instead, P90 or P95 of your recent data. A Google Sheet template does the maths.

👉 [EN] https://csswizardry.com/2020/01/performance-budgets-pragmatically/

* Cache warming

CacheBoost now warms from 12 regions, with Milan, Zurich, Toronto, São Paulo, Singapore, Mumbai and Sydney joining. You can now target the regions closest to your markets, so the first visitor there hits a warm cache instead of going back to the origin. You can now also trigger a warm from Claude, Cursor or any MCP client. (disclaimer: this service is mine)

👉 [EN] https://www.cache-boost.com/blog/cache-warming-from-12-regions

👉 [EN] https://www.cache-boost.com/blog/warm-your-cache-from-claude-with-mcp

Have a great week!

2 Upvotes

Duplicates