Why browsers throttle JavaScript timers (and what to do about it)
#751 — September 5, 2025
JavaScript Weekly
Mediabunny: A Complete Media Toolkit for JavaScript — Supporting both browsers and Node.js, this library lets you read, write and convert popular media file formats (e.g. MP4, MP3, and more) without needing to lean on dependencies like FFmpeg. You can make thumbnails, extract metadata, write code that gets converted into a video, and more. GitHub repo.
Vanilagy
Why Do Browsers Throttle JavaScript Timers? — Did you know the zero in setTimeout(0) doesn’t really mean zero? Browsers clamp timers to at least a few milliseconds or more, slowing down code that relies on them. Luckily, there are alternative options, which Nolan demonstrates and benchmarks.
Nolan Lawson
Boost Coding Productivity with AI-Assisted Tools & Agents — Join Steve Kinney for this course looking at how best to harness AI for faster, higher-quality code. Learn how Cursor and Claude Code can be used to handle project plans, carry out inline edits, and perform larger background tasks — all adhering to the guidelines you set.
Frontend Masters sponsor
Ripple: A New, In-Development TypeScript UI Framework — A new framework aiming to take the best parts of React, Solid and Svelte, and combine them into a single package. Notably, it comes from someone who worked on React and Svelte, as well as author of Lexical and Inferno, so it’s worth a look. There’s more info on the GitHub repo.
Dominic Gannaway
IN BRIEF:
The What’s New in Viteland: August 2025 recap presents a handy roundup of what’s going on with Oxlint, Vite, Vitest, Rolldown, and related projects.
The Angular team has a big summer update too, covering zoneless change detection, new animation features, AI integrations, better debugging, and more.
Thoughtbot shares its list of upcoming JavaScript conferences for 2025.
Product for Engineers Newsletter — Build better products, not just better code. Learn how to build features users love. Subscribe for free
PostHog sponsor
RELEASES:
Deno’s Fresh framework is now out in Fresh 2.0 Beta form. It can now optionally run as a Vite plugin which opens up numerous new possibilities.
Electron 38.0 – The cross-platform desktop app framework. Now using Chromium 140 and Node 22.18 with V8 14.0.
Ember 6.6 – The framework “for building ambitious web applications.”
📖 Articles and Videos
Google Chrome Turns 17: A History — A fantastic walkthrough of Chrome’s origins and its evolution over the years. Addy looks at key milestones (multi-process architecture for example), security, its steps into the world of AI, and more.
Addy Osmani
💡 On the topic of Chrome, Top Chrome APIs Every Developer Should Try covers a variety of Chrome-only JavaScript APIs, most of which I wasn’t aware of.
Lean for JavaScript Developers — A comprehensive introduction to Lean, a theorem prover and language for creating formally verified code that Dan Abramov has really been getting into recently. “I’ve never written code alongside proofs like this before. Have you?”
Dan Abramov
AI Writes Code. Wallaby MCP Makes Sure It Actually Works — Give your AI agent live execution data, coverage, and real-time insights to generate tests and code with confidence.
Wallaby Team sponsor
Getting Accurate Text Lengths with Intl.Segmenter — A useful tip for when .length just isn’t returning what you’d quite expect..
Sangeeth Sudheer
Making XML Human-Readable Without XSLT — Jake gets niche, but sets JavaScript to good use here.
Jake Archibald
📄 Stress-Testing Biome’s noFloatingPromises Lint Rule Dimitri Mitropoulos (Vercel)
📄 How to Optimize Third Party Scripts with Web Workers and Partytown Jakub Andrzejewski
📄 Redux without React: State Management in Vanilla JS Moritz Kröger
📄 Functional Custom Elements the Easy Way Ginger (Piccalilli)
🛠 Code & Tools
Peaks.js 4.0: UI Component for Interacting with Audio Waveforms — A project originally spawned from the BBC’s R&D department, Peaks renders audio waveforms to a canvas element and allows scrolling, zooming, and the sort of things you might otherwise see in an audio editor. LGPL licensed.
Chris Needham et al.
💡 There are other options in this space too, including the newly released Waveform Renderer 1.0 (complete with interactive demo) which is entirely focused on waveform rendering, as well as Wavesurfer.js.
Redux Toolkit 2.9: The ‘Batteries-Included’ Toolset for Redux — The long-standing toolset for working with Redux for state management gets a performance update with a rewrite of RTK Query’s subscription and polling systems, automatic aborting of in-flight requests when a cache entry is removed, and more.
Mark Erikson
react-window 2.0: Render Large Lists of Data Quickly — A component library for rendering large lists of data quickly and without the performance problems that often go along with that. There are several examples to check out, and React 18 is now required. (Tanstack Virtual is another option to consider in this space.)
Brian Vaughn
serverless-http 4.0 – Use your existing middleware framework (e.g. Express, Koa) on AWS Lambda.
🖋️ Signature Pad 5.1 – Canvas-based smooth signature drawing control.
Tinypool 2.0 – Minimal Node.js worker thread pool implementation.
gRPC Web 2.0 – JS implementation of gRPC for browser clients.
Jasmine 5.10 – Testing framework for browsers & Node.
NodeBB 4.5 – Node.js-powered forum system.
Watt 3 – Node.js application server.
📰 Classifieds
🎟️ JetBrains JavaScript Day is back for its fifth edition! We’ve lined up a full day of great speakers and insights. All that’s missing is you.
Meticulous automatically creates and maintains an E2E UI test suite with zero developer effort. Relied on by Dropbox, Wiz, Lattice, Bilt Rewards, etc.
✉️ From the Inbox
For a variety of reasons – not least taking a vacation in August (oops!) – I have a backlog of fantastic submissions from people that I want to share separately:
🎨 Eyecons is a VS Code icon theme that automatically adapts the color of icons to fit your editor’s main theme – well, from this list anyway.
TypeScript Result brings a Result type into play to help you handle errors in a more type-safe way.
Vue Log Arsenal is a plugin that adds a variety of logging directives for Vue 3 apps to use directly in elements, like this, for example.
Michael Sweeney shows off ‘the JavaScript equivalent of a magic trick’ using functions acting as primitives and nested proxies that remember their ancestry.
StateLayer is a forthcoming declarative 3D component framework whose homepage is a live demo. There’s also a getting started tutorial showing how to build your own 3D scene from scratch.
fp-filters is a curated suite of over a hundred common-use filter functions that can be used in a functional programming style.