Dell's support website broke last month.
Every client-side router you've ever used — React Router, Vue Router, TanStack Router, whatever Svelte is doing this week — is fundamentally a pile of...
Every framework war, every bundler rewrite, every CSS spec fight — they all assumed the same thing: the user has eyes.
Five years. That's how long it took the Web Serial API to travel from Chrome to Firefox.
Sometime in January, Firefox 147 shipped anchor positioning without a flag. Safari 26 had it.
In 2019, Chrome shipped loading="lazy" for images.
For fifteen years, every client-side router in JavaScript has been built on top of history.
Something unusual happened in browser-land: Chrome, Safari, and Edge shipped the same new API within weeks of each other last fall.
Chrome 148 quietly ships a 4.27 GB language model — Gemini Nano — to every desktop installation.
Every project I've touched in the last five years has a file somewhere — maybe lazyVideo.js, maybe useMediaObserver.
For years, "verify your identity" on the web meant taking a photo of your driver's license with your webcam, uploading it to some third-party...
Nine years.
Every design system I've worked on has some version of the same function. Maybe it's called getContrastColor().
Back in 2019, Chrome 76 shipped loading="lazy" for images, and the web performance crowd collectively exhaled.
Five lines of JavaScript. That's what it takes to translate text in Chrome now — no API key, no cloud endpoint, no third-party library.
For fifteen years, positioning a tooltip above a button required a JavaScript library.
The Digital Credentials API quietly hit stable across all three majors over the last six months, and the JavaScript surface is refreshingly boring — a single...
Chrome 142 introduced the Local Network Access permission prompt last year, and most developers shrugged.
Every few years the browser picks up a capability that reshuffles where smart people run their code. WebGL did it for 3D.