---
title: "Why browsers throttle JavaScript timers (and what to do about it)"
publication: "JavaScript Weekly"
issue: 751
published_at: "2025-09-05"
canonical_url: "https://javascriptweekly.com/issues/751"
---

Plus a great new media reader/writer/converter for JavaScript, Chrome turns 17, and how to get accurate string lengths. |        

#​751 — September 5, 2025 

[Read on the Web](https://javascriptweekly.com/issues/751)  

Together with [![Frontend Masters logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_300,h_70/e_make_transparent/co_white,e_outline:5/nk0tfdvalivacz8rw7rt.png)](https://frontendmasters.com/courses/pro-ai/?utm_source=email&utm_medium=javascriptweekly&utm_content=proai)   

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/u3xwdwpaxw19xcumymn5.jpg)](https://mediabunny.dev/)  

[Mediabunny: A Complete Media Toolkit for JavaScript](https://mediabunny.dev/) — Supporting both browsers and Node.js, this library lets you read, write and convert popular media file formats (e.g. MP4, MP3, [and more](https://mediabunny.dev/guide/supported-formats-and-codecs)) without needing to lean on dependencies like FFmpeg. You can [make thumbnails](https://mediabunny.dev/examples/thumbnail-generation/), [extract metadata](https://mediabunny.dev/examples/metadata-extraction/), [write code that gets converted into a video](https://mediabunny.dev/examples/procedural-generation/), and more. [GitHub repo.](https://github.com/Vanilagy/mediabunny) 

Vanilagy   

[Why Do Browsers Throttle JavaScript Timers?](https://nolanlawson.com/2025/08/31/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   [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/02621154.png)](https://frontendmasters.com/courses/pro-ai/?utm_source=email&utm_medium=javascriptweekly&utm_content=proai) 

[Boost Coding Productivity with AI-Assisted Tools & Agents](https://frontendmasters.com/courses/pro-ai/?utm_source=email&utm_medium=javascriptweekly&utm_content=proai) — 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](https://www.ripplejs.com/) — 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](https://lexical.dev/) and [Inferno](https://www.infernojs.org/), so it’s worth a look. There’s more info [on the GitHub repo.](https://github.com/trueadm/ripple) 

Dominic Gannaway   

**IN BRIEF:** 

- The [What's New in Viteland: August 2025 recap](https://voidzero.dev/posts/whats-new-aug-2025) 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](https://blog.angular.dev/angular-summer-update-2025-1987592a0b42) too, covering zoneless change detection, new animation features, AI integrations, better debugging, and more.
- Thoughtbot shares its [list of upcoming JavaScript conferences for 2025.](https://thoughtbot.com/blog/upcoming-javascript-and-react-conferences-for-2025)   

[Product for Engineers Newsletter](https://newsletter.posthog.com?r=5ytvh5) — Build better products, not just better code. Learn how to build features users love. [Subscribe for free](https://newsletter.posthog.com?r=5ytvh5) 

PostHog sponsor    

**RELEASES:** 

- Deno's [Fresh](https://fresh.deno.dev/) framework is [now out in _Fresh 2.0 Beta_ form.](https://deno.com/blog/fresh-and-vite) It can now optionally run as a Vite plugin which opens up numerous new possibilities.
- [Electron 38.0](https://github.com/electron/electron) – The cross-platform desktop app framework. Now using Chromium 140 and Node 22.18 with V8 14.0.
- [Ember 6.6](https://blog.emberjs.com/ember-released-6-6/) – The framework _"for building ambitious web applications."_
- [Node.js v20.19.5 (LTS)](https://nodejs.org/en/blog/release/v20.19.5)  

📖 Articles and Videos 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/hnzgwklouqzczgd4yw5y.jpg)](https://addyosmani.com/blog/chrome-17th/)  

[Google Chrome Turns 17: A History](https://addyosmani.com/blog/chrome-17th/) — 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](https://anchorbrowser.io/blog/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](https://overreacted.io/lean-for-javascript-developers/) — A comprehensive introduction to [Lean](https://lean-lang.org/), 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](https://wallabyjs.com/blog/wallaby-mcp.html?utm_source=cooperpress&utm_medium=javascriptweekly&utm_content=javascriptweekly) — 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`](https://blog.sangeeth.dev/posts/accurate-text-lengths-with-intl-segmenter-api/) — A useful tip for when `.length` just isn’t returning what you’d quite expect.. 

Sangeeth Sudheer   

[Making XML Human-Readable Without XSLT](https://jakearchibald.com/2025/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](https://vercel.com/blog/stress-testing-biomes-nofloatingpromises-lint-rule) Dimitri Mitropoulos (Vercel) 

📄 [How to Optimize Third Party Scripts with Web Workers and Partytown](https://www.debugbear.com/blog/partytown-web-workers) Jakub Andrzejewski 

📄 [Redux _without_ React: State Management in Vanilla JS](https://www.sitepoint.com/redux-without-react-state-management-vanilla-javascript/) Moritz Kröger 

📄 [Functional Custom Elements the Easy Way](https://piccalil.li/blog/functional-custom-elements-the-easy-way/) Ginger (Piccalilli)  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/csbiyt4i3hxzhyqbrrjg.jpg)](https://codeberg.org/chrisn/peaks.js)  

[Peaks.js 4.0: UI Component for Interacting with Audio Waveforms](https://codeberg.org/chrisn/peaks.js) — 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](https://waveform-renderer.vercel.app/) (complete with [interactive demo](https://waveform-renderer.vercel.app/demo/)) which is entirely focused on waveform rendering, as well as [Wavesurfer.js.](https://wavesurfer.xyz/)  

[Redux Toolkit 2.9: The 'Batteries-Included' Toolset for Redux](https://github.com/reduxjs/redux-toolkit/releases/tag/v2.9.0) — 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](https://react-window.vercel.app/) — 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](https://tanstack.com/virtual/latest) is another option to consider in this space.) 

Brian Vaughn   

- [serverless-http 4.0](https://github.com/dougmoscrop/serverless-http) – Use your existing middleware framework (e.g. Express, Koa) on AWS Lambda.
- 🖋️ [Signature Pad 5.1](https://szimek.github.io/signature_pad/) – Canvas-based smooth signature drawing control.
- [Tinypool 2.0](https://github.com/tinylibs/tinypool) – Minimal Node.js worker thread pool implementation.
- [gRPC Web 2.0](https://github.com/grpc/grpc-web) – JS implementation of gRPC for browser clients.
- [Jasmine 5.10](https://github.com/jasmine/jasmine/blob/main/release_notes/5.10.0.md) – Testing framework for browsers & Node.
- [NodeBB 4.5](https://github.com/NodeBB/NodeBB) – Node.js-powered forum system.
- [Watt 3](https://blog.platformatic.dev/introducing-watt-3) – Node.js application server.      

📰 Classifieds   

🎟️ [JetBrains JavaScript Day](https://lp.jetbrains.com/javascript-day-2025/?utm_source=cooperpress&utm_medium=cpc&utm_campaign=js_weekly_javascript_day_2025&utm_content=1) 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](https://www.meticulous.ai/?utm_source=javascript_weekly&utm_campaign=september5th2025%20). 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:  

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/xpv93uhclrfmn7fsvf22.jpg)](https://eyecons.dev/)  

- 🎨 [Eyecons](https://eyecons.dev/) is a VS Code icon theme that automatically adapts the color of icons to fit your editor's main theme – well, [from this list](https://github.com/azat-io/eyecons?tab=readme-ov-file#themes)anyway.
- [TypeScript Result](https://github.com/everweij/typescript-result) brings a `Result` type into play to help you handle errors in a more type-safe way.
- [Vue Log Arsenal](https://github.com/MvdZon/Vue3-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.](https://github.com/MvdZon/Vue3-log-arsenal?tab=readme-ov-file#examples)
- Michael Sweeney [shows off 'the JavaScript equivalent of a magic trick'](https://dev.to/overthemike/cosplay-and-wiretapping-javascripts-hidden-superpowers-1gcm) using functions acting as primitives and nested proxies that remember their ancestry.
- [StateLayer](https://statelayer.com/) is a forthcoming declarative 3D component framework whose homepage is a live demo. There's also a [getting started tutorial](https://statelayer.com/blog/getting-started) showing how to build your own 3D scene from scratch.
- [fp-filters](https://github.com/Oaxoa/fp-filters) is a curated suite of over a hundred common-use filter functions that can be used in a functional programming style.         

Published by [Cooperpress](https://cooperpress.com/) and edited by [Peter Cooper](https://twitter.com/cooperx86) 

'JavaScript' is a trademark of Oracle Corporation in the US
We are not endorsed by or affiliated with Oracle. 

[Change your email address](https://javascriptweekly.com/edit_subscription/*|UID|*) or [stop getting this newsletter](https://javascriptweekly.com/leave/*|UID|*). 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
