Happy Friday!
Adrian Roselli was kind enough to collect and share a very nice list of advent calendars! More reading, yay!!! A few articles that piqued my interest so far…
- Stephanie Eckles discusses an accessibility issue that can happen with native HTML
popover/dialogcomponents. - Barry Pollard runs us through some fine-tunings we can make to our Speculation Rules.
- Mauro Bieg walks us through how to improve TTFB and UX with HTTP streaming. I’ve used PHP’s
flush()before, but this goes beyond that… - Kilian Valkhof explains what IDREFs are and how to use them. Spoiler: You probably already know what they are, just not by that name, but you may not know all the ways in which they are, and can, be used!
- Matt Zeunert takes us on a monster deep-dive in Exploring Large HTML Documents On The Web. Sooooo many variations to consider…
Christian Heilmann shares his list, via the WeAreDevelopers website. There are some repeats from Adrian’s list, but some new ones, too!
I chat a lot about Project Baseline, because I love the approach. In addition to the WebStatus.dev site for tracking features, you can now check-out Baseline in action, a collection of articles and demos showing you some of what’s possible with features that are now Baseline
. The emphasis there is mine, because it is kind of the critical portion of Project Baseline: What can I use right now? So checkout what you can start using today! :-)
Amit Merchant shares one teeny-tiny-little-line of CSS that helps eliminate a common page stability issue: that damned suddenly-appearing/-disappearing scrollbar:
scrollbar-gutter: stable;
On the html element, it prevents layout shift when overflow: hidden is added to prevent scrolling while dialogs/modals are displayed, but it can also be added to any other scrollable page element.
Alexander Williams chats about the Hidden Performance Tax of Convenience of CSS-in-JS. Couldn’t agree more…
Speaking of JS, Nadia Makarevich shares her Bundle Size Investigation: A Step-by-Step Guide to Shrinking Your JavaScript. One of the better articles on this topic I have seen, love how she focuses so thoroughly on the investigation portion; so often, this portion is sort of “left out”, as if we all know how to just dig in and find things to remove… Good on ya, Nadia!
In response to a question from Wes Bos, Bramus Van Damme explains how to set your anchor positioning to the inside corner, something Bramus refers to as the Inset-Modified Containing Block (IMCB). That’s a mouthful…
Franz Bernack shares 6 HTML Features You’re Not Using (But Should Be) (YouTube). Okay, bit of a bait-clicky title, but these are some really good ones! Have to admit I was not familiar with template or inert (love both of these, but especially love that insert also affects all elements within the element it is applied to). I was aware of output, though I don’t think I’ve ever used. But the others? Come on, man… ;-)
The December 2, 2025 issue of the Smashing Newsletter is dedicated to… Performance! Most of these have been referenced here previously, but always worth a look to see if there is something new or forgotten!
Speaking of performance, the good folks at Ecosystem Performance (e18e) are looking for performance rules that they can add to their eslint-plugin. Anyone care to share their ideas?
Scott Tolinski shows how to create an awesome swipe switch using (almost) only HTML and CSS. There is a tiny bit of JS needed for the version that triggers-and-resets, for the functionality you would want the switch to do, and then a really tiny bit to make Safari fall in line. But it is a great case of “LoJS”!
And finally, any bored history nerds out there? If so, got just the thing for you: The History of Email. Yup. From “the advent of time-sharing in the early 1960s” to when “Ray Tomlinson sent the first mail message between two computers [using the] now-familiar address syntax with the ‘@’ symbol”, through “sending mail messages over the File Transfer Protocol”, CompuServe, and HPMAIL, up to “the current Internet suite of SMTP, POP3 and IMAP” and beyond.
Happy reading,
Atg