Stoyan Stefanov
@stoyan.me
stoyan.me, PerfPlanet, "JavaScript Patterns", "React: Up & Running", YSlow, SmushIt. Formerly of Facebook, WebPageTest, Yahoo
New blog in the series about building SightRead.org www.phpied.com/quick-and-di...
Quick and dirty linting
This post is another installment of the series dedicated to building sightread.org. Parts 1, 2, 3, 4, 5, 6. I've been using TypeScript (actually JSDoc + tsc --noEmit) as my linter for a while. Well, ...
phpied.com
sightread.org/blog/asymmet... Adding support for 7/8 and family to my music sight reading project
Asymmetric time signatures - SightRead.org Blog
Practice rhythms in 5/8, 7/8, and 11/8 with flexible beat groupings that make these meters feel natural.
sightread.org
New blog post about an experiment in measuring how rendering times are affected by the size of SVGs www.phpied.com/measuring-sv...
Measuring SVG rendering time
The questions Is rendering large SVGs significantly slower than smaller ones? Is there a cut-off size above which things are terrible? And what if these SVGs were PNGs, just for giggles. To answer t...
phpied.com
I don't think there are many music dictation apps out there, but here's v1 of mine. Rhythm-only for now, part of the sightread.org project. To try sightread.org?rhythm-dicta... To read the blog post sightread.org/blog/quests-...
Introducing Quests and Rhythmic Dictation - SightRead.org Blog
SightRead.org now has quests. Rhythmic Dictation is a new mode where you hear a rhythm and try to identify it.
sightread.org
7 tips for your #WebPerformance education: Every December, @stoyan.me publishes the excellent Web Performance Calendar. It is a great collection of insights from the world's top experts. Even in 2026, these articles are a "must-read." Here is what caught my eye this year (thread). ⤵️
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...
phpied.com
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
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...
phpied.com
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...
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...
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.
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-...
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...
@stoyan.me it's been a fantastic Web Performance Calendar, thank you for curating it and Happy New Year!
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 !
PerfAgent - AI-Powered Web Performance Analysis
Get expert insights on Core Web Vitals and performance optimization from an AI specialized in web performance analysis.
agent.perflab.io
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...
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
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
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
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
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
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?
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...
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
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
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!
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...
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
My article for Performance Calendar is live, looking at tips to help focus when doing performance traces.
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...
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