Stoyan Stefanov
banner
stoyan.me
Stoyan Stefanov
@stoyan.me
stoyan.me, PerfPlanet, "JavaScript Patterns", "React: Up & Running", YSlow, SmushIt. Formerly of Facebook, WebPageTest, Yahoo
New blog post www.phpied.com/type-checkin...
This is now part 4 of something I thought will be a quick note. Installment 4 talks about type checking without TypeScript. Hello JSDoc!
And so the DIY-ing continues until morale improves!
Type checking without the muck
This is part 4 of a series about hacking on sightread.org with minimal tooling/building and maximum web platform-ing: Part 1: Import JavaScript like it's 2026 Part 2: Maximally Minimal Build Proc...
www.phpied.com
January 12, 2026 at 6:51 AM
Reposted by Stoyan Stefanov
Huge congrats and kudos to @stoyan.me for running it and to all the authors for writing articles for this year's Web Performance calendar.

calendar.perfplanet.com/2025/

The quality was very high, and it feels like every second post was a banger!
2025 Archives
The speed geek's favorite time of year
calendar.perfplanet.com
January 5, 2026 at 10:48 PM
New blog post: www.phpied.com/maximally-mi...
It's about staying away from most everything the JS ecosystem has to offer and stick close to the web platform. A build is still necessary because of long lived caches and updates but it can be tiny and simple. Time will tell how this strategy plays out
Maximally Minimal Build Process
In my previous post I described how I set up sightread.org with no build process and modern JavaScript. The goal was raw ES modules, no transpilation, no bundling, just <script type="module"> and we'r...
www.phpied.com
January 4, 2026 at 11:09 PM
Reposted by Stoyan Stefanov
Let's make 2026 the year to make web simple again. Not everything needs to be an app, sometimes its just idk a website. 🥳🥳
Web Performance Calendar day 31 article 5/5: @infrequently.org investigates SPA usage patterns showing that users often trigger only ~1 soft navigation per page load. If the heavy upfront JS costs aren’t being amortized, what are SPA's performance benefits?
calendar.perfplanet.com/2025/the-cur...
The Curious Case of the Shallow Session SPAs
Buried at the end of this year's instalment of my semi-annual series on network and device reality is a mystery: multiple, independent data sets from the Web Performance community indicate sites built...
calendar.perfplanet.com
January 1, 2026 at 4:53 AM
Reposted by Stoyan Stefanov
People like to say “once the single page app is booted, it’s faster”, but they’re wrong — stats show few subsequent navigations occur.

React simply isn’t worth the cost for most websites.
Web Performance Calendar day 31 article 5/5: @infrequently.org investigates SPA usage patterns showing that users often trigger only ~1 soft navigation per page load. If the heavy upfront JS costs aren’t being amortized, what are SPA's performance benefits?
calendar.perfplanet.com/2025/the-cur...
The Curious Case of the Shallow Session SPAs
Buried at the end of this year's instalment of my semi-annual series on network and device reality is a mystery: multiple, independent data sets from the Web Performance community indicate sites built...
calendar.perfplanet.com
December 31, 2025 at 10:21 PM
Reposted by Stoyan Stefanov
I almost slipped this article because that headline is usually a red flag to me. But I'll be damned, every single one of these features slap.
December 31, 2025 at 6:41 PM
Reposted by Stoyan Stefanov
Put the NYE champagne down… my article is up on the 2025 Web Performance Calendar 🥳
Web Performance Calendar day 31 article 4/5: @twnsnd.com on Compression Dictionaries to dramatically shrink responses (60–90% smaller than Brotli/GZIP). Why adoption is slow. Practical architectural decisions and implementation tips to get huge bandwidth wins.
calendar.perfplanet.com/2025/from-th...
From Theory to Tiny: Implementing Compression Dictionaries
Compression Dictionary Transport became an official IETF Proposed Standard this September (congratulations to Yoav Weiss & Pat Meenan 🎉). If you don't know what they are, I recommend watching Pat's wo...
calendar.perfplanet.com
December 31, 2025 at 5:32 PM
Reposted by Stoyan Stefanov
@stoyan.me it's been a fantastic Web Performance Calendar, thank you for curating it and Happy New Year!
December 31, 2025 at 5:34 PM
Reposted by Stoyan Stefanov
Wrapping up the year with my article for the Perf Calendar with my write up about how I ended up creating agent.perflab.io!

It has AI, it has Perf…what else could you want 😎🔥

I’m always happy to see my content in the Performance Calendar!

Thanks for the initiative @stoyan.me !
December 31, 2025 at 5:36 PM
Web Performance Calendar day 31 article 5/5: @infrequently.org investigates SPA usage patterns showing that users often trigger only ~1 soft navigation per page load. If the heavy upfront JS costs aren’t being amortized, what are SPA's performance benefits?
calendar.perfplanet.com/2025/the-cur...
The Curious Case of the Shallow Session SPAs
Buried at the end of this year's instalment of my semi-annual series on network and device reality is a mystery: multiple, independent data sets from the Web Performance community indicate sites built...
calendar.perfplanet.com
December 31, 2025 at 5:50 PM
Web Performance Calendar day 31 article 4/5: @twnsnd.com on Compression Dictionaries to dramatically shrink responses (60–90% smaller than Brotli/GZIP). Why adoption is slow. Practical architectural decisions and implementation tips to get huge bandwidth wins.
calendar.perfplanet.com/2025/from-th...
From Theory to Tiny: Implementing Compression Dictionaries
Compression Dictionary Transport became an official IETF Proposed Standard this September (congratulations to Yoav Weiss & Pat Meenan 🎉). If you don't know what they are, I recommend watching Pat's wo...
calendar.perfplanet.com
December 31, 2025 at 5:19 PM
Web Performance Calendar day 31 article 3/5: Can AI meaningfully help with real-world performance analysis? @webx.bsky.social explores how to train AI/LLM agents to interpret complex browser data (like DevTools traces) into actionable insights.

calendar.perfplanet.com/2025/teachin...
Teaching Agents about Performance insights
AI is kinda everywhere! Everyone is shipping AI features or Agents, but few of those systems can reason about the complex reality of performance data. This session is a deep dive story into the jour...
calendar.perfplanet.com
December 31, 2025 at 5:02 PM
Web Performance Calendar day 31 article 2/5: @keerthanak17.bsky.social on making friends with Chrome DevTools and transforming it into a powerful tool for deep understanding, debugging, and improving of real-world web performance

calendar.perfplanet.com/2025/chrome-...
Chrome DevTools Features I Use All the Time (and Why You Should Too)
Most developers open Chrome DevTools, check a couple of network requests, maybe refresh the page once or twice — and that's it. I used to do the same. Over time, DevTools became something else entir...
calendar.perfplanet.com
December 31, 2025 at 4:19 PM
Web Performance Calendar day 31 article 1/5: Tsvetan Stoychev shares that BasicRUM (open-source Real User Monitoring tool) will have its source code released Q1 2026. Self-hosted, privacy-friendly, with AI-powered insights & dashboards to spot perf issues
calendar.perfplanet.com/2025/open-so...
Open Source RUM with BasicRUM
It's been a long, busy year but my friend Faisal and I stayed focused on building BasicRUM. After work, we pushed countless commits from a cozy café in Munich. The important news is that we're wrappi...
calendar.perfplanet.com
December 31, 2025 at 3:45 PM
New blog post about subsetting a ligature-heavy font highperformancewebfonts.com/read/subsett...

Almost always we subset based on text. But in my case, a more fine-tuned glyph-based approach saves 91% of bytes as opposed to 74% in the usual way. Worth it?
December 30, 2025 at 8:33 PM
Reposted by Stoyan Stefanov
Our Web Performance Journey guide is live on PerfPlanet Calendar!
Web Performance Calendar day 30 with @sergeyche.dev, Eric Goldstein and Alex Chernyshev on mastering perf: get business to care, link UX speed to outcomes, set thresholds, understand real users with percentiles, trends, distributions, tie to business metrics
calendar.perfplanet.com/2025/7-steps...
7 Steps of a Web Performance Journey
This year, Sergey Chernyshev, Eric Goldstein, and Alex Chernyshev - members of the NY Web Performance meetup - decided to collaborate on the future of the UX Speed Calculator tool Sergey created a few...
calendar.perfplanet.com
December 30, 2025 at 4:41 PM
Web Performance Calendar day 30 with @sergeyche.dev, Eric Goldstein and Alex Chernyshev on mastering perf: get business to care, link UX speed to outcomes, set thresholds, understand real users with percentiles, trends, distributions, tie to business metrics
calendar.perfplanet.com/2025/7-steps...
7 Steps of a Web Performance Journey
This year, Sergey Chernyshev, Eric Goldstein, and Alex Chernyshev - members of the NY Web Performance meetup - decided to collaborate on the future of the UX Speed Calculator tool Sergey created a few...
calendar.perfplanet.com
December 30, 2025 at 4:35 PM
I added a little feature to sightread.org to remove the chrome so I can screen-record exercises UI-free and post them as Instagram reels. This way folks can squeeze a bit of practice while scrolling. If that sounds like you: www.instagram.com/sightreadorg/
SightRead.org
sightread.org
December 29, 2025 at 7:37 PM
Reposted by Stoyan Stefanov
My contribution to this years Web Performance Calendar is all about Third Parties and Single Points of Failure (SPOF). Based on @httparchive.org data I found that 67% of websites have at least 1 render blocking third party - and quite a few of them are SPOF risks!
December 29, 2025 at 3:20 PM
Web Performance Calendar day 29 with @paulcalvano.bsky.social's research on 3rd parties, SPOF, and the need to test and monitor these. 67% of sites out there have at least 1 render-blocking external dependency.

calendar.perfplanet.com/2025/third-p...
Third Parties and Single Points of Failure
You've heard it many times - third party content can easily cause an otherwise well performing website to become sluggish and slow. And depending on how this content is loaded, it can also introduce s...
calendar.perfplanet.com
December 29, 2025 at 3:02 PM
Reposted by Stoyan Stefanov
My article for Performance Calendar is live, looking at tips to help focus when doing performance traces.
December 28, 2025 at 5:18 PM
Web Performance Calendar day 28 when Ian Duffy shows us how to tame Chrome’s Performance panel: reduce noise, search fast, annotate, use Insights, and customize tracks

calendar.perfplanet.com/2025/tips-fo...
Tips for making the Performance Panel less overwhelming
Introduction The Performance Panel is used for detailed investigations on traces captured during page load or during user interactions. It's a critical tool for understanding and debugging performanc...
calendar.perfplanet.com
December 28, 2025 at 4:40 PM
Web Performance Calendar day 27 with @nucliweb.net on using Chrome DevTools for fun and profit: inspect heavy files in Network panel, monitor Core Web Vitals, record performance traces, validate optimizations, and more.

calendar.perfplanet.com/2025/chrome-...
Chrome DevTools for Debugging Web Performance
This is a step-by-step guide on how I use Chrome DevTools (DevTools from now on) to detect Web Performance issues on a website, as well as validate hypotheses to fix some of the problems found. Discl...
calendar.perfplanet.com
December 27, 2025 at 2:47 PM
Web Performance Calendar day 26 with Sébastien Mischler on HTML streaming/flushing and how this old trick (featured in the first edition of the calendar) applies to today's CSR world. Show content now, not after JS finishes thinking. Fast pages, happy users.
calendar.perfplanet.com/2025/revisit...
Revisiting HTML streaming for modern web performance
Introduction Modern web performance issues often come from delayed rendering rather than network speed. Client-side hydration and heavy JavaScript pipelines can prevent browsers from showing content ...
calendar.perfplanet.com
December 26, 2025 at 2:20 PM
Web Performance Calendar X-mas edition with Nicolas Hodin on BFCache: a huge UX win, but easy to break with Cache: no-store, unload handlers, iframes, or long-lived connections

calendar.perfplanet.com/2025/chasing...
Chasing BFCache navigations
What is BFCache? The Back/Forward Cache, or BFCache, is a browser mechanism that allows a page to be restored instantly when a user uses the browser's Back or Forward buttons. Unlike a simple HTTP c...
calendar.perfplanet.com
December 25, 2025 at 3:46 PM