Stoyan Stefanov
banner
stoyan.me
Stoyan Stefanov
@stoyan.me
stoyan.me, PerfPlanet, "JavaScript Patterns", "React: Up & Running", YSlow, SmushIt. Formerly of Facebook, WebPageTest, Yahoo
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
New blog post "Lazy-Loading Optional Fonts with Native Browser API" describing a wee trick I do on sightread.org to load music glyphs, optionally

highperformancewebfonts.com/read/lazy-lo...
December 24, 2025 at 7:21 PM
Reposted by Stoyan Stefanov
I’m using No-Vary-Search in production already—you probably should be too!

@tunetheweb.com has the details 👇🏻
December 23, 2025 at 2:44 PM
Reposted by Stoyan Stefanov
This one got released rather quietly and I think could do with a bit more attention!

Read about how to avoid caching performance penalties due to tracking query params and the like!
December 23, 2025 at 1:57 PM
Web Performance Calendar day 24 with @programmingart.bsky.social on TTFB. Yes, it's one of those X-mas Eves where we cuddle by the fire, drop everything and immerse into re-learning and re-evaluating what we thought we knew about a concept we use daily
calendar.perfplanet.com/2025/ttfb-do...
TTFB doesn't mean what you think it means
Time-To-First-Byte (TTFB) is a popular performance metric, yet there are many problems and nuances with it. Not only does it have several different definitions, it is usually also a "compound" metric,...
calendar.perfplanet.com
December 24, 2025 at 1:22 PM
Web Performance Calendar day 23 with @tunetheweb.com on configuring caches to ignore non-content-affecting URL parameters and reclaim performance. No more of this query string = cache miss nonsense.

calendar.perfplanet.com/2025/fixing-...
Fixing the URL params performance penalty
Tales of two pages… What's the difference between these two pages?: https://www.example.com/ https://www.example.com/?utm_source=email I mean they've got different URLs, but many of us would ...
calendar.perfplanet.com
December 23, 2025 at 1:50 PM
Web Performance Calendar day 21 with Conor McCarthy and lessons learned from web perf client site reviews

calendar.perfplanet.com/2025/insight...
Insights from 100 site speed reviews in 2025
Over the course of 2025, I have completed 100 site speed reviews at DebugBear. This is a free service we offer to trial accounts looking for a brief assessment of their current web performance. Reque...
calendar.perfplanet.com
December 21, 2025 at 11:27 AM
Web Performance Calendar day 20 with @verlok.bsky.social on CLS-friendly skeletons. Can you "load more" while keeping layout shifts to a minimum?

calendar.perfplanet.com/2025/optimiz...
Optimizing CLS for Infinite Scroll and Load More
Even though Cumulative Layout Shift (CLS) has been a well-known metric for about five years now, I still frequently encounter negative scores on major websites during my web performance audits. The m...
calendar.perfplanet.com
December 20, 2025 at 8:36 AM
Web Performance Calendar day 19 with Alex Podelko on how performance engineering has evolved with computing: from mainframes to distributed systems, web/mobile, cloud, AI. Knowing your history may help reduce wheel-reinvention and encourage skills reuse

calendar.perfplanet.com/2025/a-short...
A Short History of Performance Engineering
A long time ago, in 2014, I did the “A Short History of Performance Engineering” Ignite talk at the Velocity conference (slides and video). A lot of new developments have happened since 2014, so here ...
calendar.perfplanet.com
December 19, 2025 at 8:34 AM
Web Performance Calendar day 18 with Amrik Malhans on breaking down LCP to pinpoint what's slowing down the page exactly and where to focus your UX-optimizing efforts

calendar.perfplanet.com/2025/the-ana...
The Anatomy of LCP - A Deep Dive into Sub-Parts
Optimizing LCP (Largest Contentful Paint) is not just reducing the file size of your images, there's a lot more that goes into optimizing the loading strategy - and you can only grasp where the bottle...
calendar.perfplanet.com
December 18, 2025 at 11:37 PM
Web Performance Calendar day 17 with Adam Zachary Wasserman on outperforming modern frameworks with this one weird little trick

calendar.perfplanet.com/2025/the-old...
The Old Ways Are the Best: 100 Lighthouse, 0ms TBT, 32ms Queries
How mainframe-era techniques and native browser APIs outperform modern frameworks The Numbers Before the philosophy, the receipts: Frontend (multicardz.com): 32KB JavaScript bundle (15% of mini...
calendar.perfplanet.com
December 17, 2025 at 9:15 AM
Web Performance Calendar day 16 with @sandervs.bsky.social on why the word "millisecond" doesn't belong in the boardroom

calendar.perfplanet.com/2025/why-we-...
Why we should stop talking performance metrics to Business Leaders
Web performance is a lot like walking on those moving walkways at the airport. When it moves smoothly, you barely notice it. You feel fast. Supported. In control. But when one section stutters, even ...
calendar.perfplanet.com
December 16, 2025 at 1:52 PM
Web Performance Calendar day 15 with @nicj.net, @cliffcrocker.bsky.social and @karlijnlowik.bsky.social Löwik presenting an update on W3's RUM Community Group and YOU

calendar.perfplanet.com/2025/rumcg-a...
RUMCG - A year in review
performance.now() 2024 was the year we officially launched the W3 RUM Community Group. The idea to form a community group around real user monitoring (RUM) came from the desire to come together as ven...
calendar.perfplanet.com
December 15, 2025 at 9:57 AM
Web Performance Calendar day 14 with Morgan Murrah on compositing for smooth web animations and how GPU-friendly properties (transform, opacity) keep animations off the main thread

calendar.perfplanet.com/2025/a-tale-...
A tale of two animations - the compositor in the skies
My website has an animation of clouds moving across the screen. It formerly had an animation of a sun with pulsing waves which is now static. An important performance consideration decided how this ca...
calendar.perfplanet.com
December 14, 2025 at 7:34 PM
Web Performance Calendar day 13 with Yoav Weiss (@yoav.ws) showing us a clever and creative way to ship *only* critical/necessary CSS for each page type (home, search, etc) while also avoiding duplicate code in the CSS bundles.

calendar.perfplanet.com/2025/how-to-...
How to load CSS (fast)
Loading styles on the web is something that looks trivial at first. You just add a <link rel=stylesheet> to your page (or <style> for inline styles) and you're done. But if you wanted to load CSS fas...
calendar.perfplanet.com
December 13, 2025 at 9:19 AM
Web Performance Calendar day 12 with @adevnadia.bsky.social's investigation of React Server Components, their pros and cons compared to client-side rendering and traditional server-side rendering (with/without data fetching with/without Next.js)

calendar.perfplanet.com/2025/intro-t...
Intro to Performance of React Server Components
Have you heard of React Server Components? Even if you don't work with React daily, you probably have. It's been the hottest topic in the last few years in the React Community. And in addition to bei...
calendar.perfplanet.com
December 12, 2025 at 9:50 AM
Web Performance calendar day 10 with yours truly using ML and HTTPArchive data to explore an "AI webperf consultant" idea. YSlow (pronounced “Why Slow?”) meets aiSlow (pronounced “Eh, I Slow?”).

calendar.perfplanet.com/2025/aislow/
aiSlow
Remember YSlow? If you do, skip to the next header. YSlow? Back in the olden days circa 2007-ish, there appeared a tool called YSlow. It was a Firefox extension (Chrome wasn't a thing, not even a sp...
calendar.perfplanet.com
December 11, 2025 at 10:51 AM
Web performance folks, the pipeline of the advent calendar is dry. If you were thinking of writing or you've started, now would be perfect time to wrap it up and send it over. Thanks a million to everyone who'd helping! If you don't know what I'm on about, see calendar.perfplanet.com/contribute
Contribute
Passionate about a topic? Working on a new tool? Have a technique you want to teach? Research you've done? Tell the web performance community! Send your articles to ssttoo@ymail.com. Please include: ...
calendar.perfplanet.com
December 11, 2025 at 1:05 AM
Web Performance day 10 with Michal Matuška on what's new in React perf: for stateful hidden UI and the Performance Tracks in DevTools for full-timeline visibility of what React is doing

calendar.perfplanet.com/2025/react-1...
React 19.2. Further Advances INP Optimization
Last year, in the article “5 tips to effectively optimize INP in React,” we focused on what developers often underestimate when optimizing React. React is not automatically fast, and long JavaScript ...
calendar.perfplanet.com
December 10, 2025 at 10:08 AM
Hello London!
December 9, 2025 at 12:47 PM
Reposted by Stoyan Stefanov
100ms ≠ 1%, do not trust the case study from Amazon

Rather have a few high-quality case studies than many low-quality ones. It hurts the whole industry.

My article for #WebPerf Calendar 2025. Thanks @stoyan.me!

calendar.perfplanet.com/2025/the-inc...
The Inconvenient Truth: How Web Performance Case Studies Undermine Our Relationship with Business
Despite its critical importance to online business, web performance is still fighting for attention from key stakeholders. Abstract technical metrics are not enough; people want to see money and the a...
calendar.perfplanet.com
December 9, 2025 at 12:39 PM
Web Performance Calendar day 9 with @machal.bsky.social on Web perf folklore vs. evidence. Too many anecdotes (like 100ms = 1%) conflate speed gains with redesigns, UX changes, or seasonal shifts. Repeating them hurts the credibility of real performance work.

calendar.perfplanet.com/the-inconven...
The Inconvenient Truth: How Web Performance Case Studies Undermine Our Relationship with Business
Despite its critical importance to online business, web performance is still fighting for attention from key stakeholders. Abstract technical metrics are not enough; people want to see money and the a...
calendar.perfplanet.com
December 9, 2025 at 10:52 AM
Web Performance Calendar day 8 with Edwin Molina Hernández @webperfreport.bsky.social showing how a great perf report is more than numbers, it turns metrics into actionable answers to questions like "what improved?", "what regressed?", and "what to do next?".
calendar.perfplanet.com/2025/the-ana...
The Anatomy of a Web Performance Report
A high-level view of performance reporting In the performance community, we spend a lot of time talking about tools, metrics, budgets, thresholds, regressions, and dashboards. But at the end of the d...
calendar.perfplanet.com
December 8, 2025 at 11:35 AM