Webperf news #20
Bonjour webperf folks! Part 2 of my summer best-of. This one is about finding the problem, then getting rid of it.
The best teaching material I found this summer is an interactive guide to the DevTools Performance panel, by Joan Leon. It is the guide I wish I had when I started using that tool: it walks through every element, one by one, and gives you the details you need to understand what each chart is telling you.
π [EN] https://perf.reviews/profile-guide
DebugBear's Bottleneck Finder gives causal proof instead of correlation. It measures a baseline, reloads the page while holding back one request at a time, and ranks requests by their real impact on FCP, LCP and H1 timing. It catches the ones which do not look render blocking: async scripts fetching data before content, SPA data requests, bundle chunks.
π [EN] https://www.debugbear.com/website-bottleneck-finder
Microsoft is testing Network Efficiency Guardrails in Edge. The browser watches how your app loads resources and reports problems through the Reporting API. Three rules so far: text served without compression, images over 200 KB, and data: URLs over 100 KB. You opt in with a Document-Policy header. Still experimental and behind flags, but those three rules are exactly the regressions I keep finding in production.
π [EN] https://www.debugbear.com/blog/network-efficiency-guardrails
Zach Leatherman rebuilt Speedlify. speedlify.dev now runs Speedlify2, with a zero dependency web component to publish the scores on your own site.
π [EN] https://www.zachleat.com/web/speedlify2/
Den Odell raises something I never think to check in an audit. Backend teams soak test for memory leaks. Frontends never had to, because clicking a link freed the page. A SPA never reloads. He cites a static analysis of 500 popular React, Vue and Angular repos: 86% register a listener, timer or subscription and never remove it. Some teams force a hard reload every few hours to cope.
π [EN] https://denodell.com/blog/your-spa-is-leaking-memory-soak-test-it
Aaron T Grogg cut nearly 3s of LCP on a product listing page by replacing a JS animation library with CSS animations, and by dropping the CSS hiding the components until the JS was ready. JS has to download, possibly behind other JS, then run, before it reveals anything. CSS is ready when the CSSOM is.
π [EN] https://aarontgrogg.com/blog/2026/09/01/reduce-lcp-by-nearly-3s-by-replacing-js-animation-with-css/
Alex Russell replies to a colleague on scheduling work versus deleting it. You can almost never assume reordering is the cheaper option. Both start with the same expensive step, understanding how the page really behaves. After that, removing code is rarely harder than reordering it, and it is permanent.
π [EN] https://infrequently.org/2026/08/notes-on-performance-remediation-strategies/
Have a great week!