If you have any interest in music and being able to render music or generate music with JavaScript, be sure to check out the very end of this issue where we've dedicated an entire section to the topic :-) __ Your editor, Peter Cooper
JavaScript Weekly
How to Keep package.json Under Control — Staring at a 863 megabyte node_modules folder for Val Town’s React app, Tom got to thinking about ‘dependency hygiene’ and some good ways to keep things under control. Good tips and tool recommendations here.
Tom MacWright
Behind the Scenes of bun install — Talk about an epic post. This is no mere explanation of how Bun quickly and efficiently installs packages — but a tour of package installation more generally, the underlying technicalities that make package installation tricky universally, and how Bun has tackled the problem.
Lydia Hallie (Bun)
Stop Reinventing Forms. Use SurveyJS Instead — SurveyJS UI components let you build JSON-driven forms, render them in React, Angular, Vue 3, or plain JS, and store results in your own DB. Open-source, extensible, no vendor lock-in — save months of development and stay in control of your data.
Deno 2.5 – You can now create sets of permissions in deno.json, Deno.test gets some DX improvements, and deno bundle gets a programmatic API so you can script the bundling of your app, along with much more.
ESLint v9.35.0 – Has a new rule (preserve-caught-error) for disallowing the loss of an originally caught error when re-throwing custom errors.
The Missing Link in JavaScript Tools? — Marvin ponders whether today’s fractured toolchain for templates, CSS imports, JSX, and numerous other non-standard enhancements to JavaScript could be unified into a single pipeline.
Marvin Hagemeister
Finally, Safe Array Methods in JavaScript — arr.sort() will sort your array in place, whereas ES2023’s arr.toSorted() will return a new, sorted copy of arr. There are several such methods you might prefer to use.
Matt Smith
Secure Your Agentic Apps with Auth for GenAI — Secure your agentic apps with features like User Authentication for AI agents, Token Vault, and more with Auth0’s Auth for GenAI (exclusively in Developer Preview).
Auth0 sponsor
An Interactive Guide to TanStack DB — TanStack DB offers an embedded client‑side database that uses differential dataflow to power live, relational queries, sub‑ms incremental updates, and optimistic writes. This tutorial leans on using it with React, but TanStack DB works alongside Vue, Solid, and Svelte as well.
Andromeda: The Newest JavaScript Runtime on the Block — A new JavaScript and TypeScript runtime built around the Rust-powered Nova engine. It’s still early days but they’re promising a lot: native single file compilation, a GPU-accelerated 2D Canvas API, low runtime overhead, interop with Rust, memory safety, WinterTC compatibility, and cross-platform support.
SpessaSynth: SoundFont2-Based MIDI Player and Synthesizer — If you think typical browser-played MIDI files sound terrible, you’re right – but try this! It uses a SoundFont sample driven approach to play MIDI files in a predictable fashion, and also includes an editor/visualizer if you need it. The live demo is quite striking.
Spessasus
While we're on the topic, here are some other neat music related JavaScript projects we've enjoyed over the years:
alphaTab – A full on music notation and guitar tab rendering library for building complete musical apps (above).
chiptune3.js – A bit like SpressaSynth (also above) but for playing module file music. Live demo.
🎸 SVGuitar – A library to render SVG guitar chord charts.
JZZ.js – A JavaScript MIDI library that hides a lot of complexity behind its chained syntax when you need to work directly with MIDI. (The keyboard logo at the top left of its homepage is a neat easter egg.)
Strudel – A live-coding environment in the browser for generating pieces of music with simple, chained JavaScript expressions.
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.
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.
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?”
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.
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.
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.
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.
An Illustrated Guide to Big O and Time Complexity — A fantastic JavaScript-oriented, interactive, visual essay about Big O notation and its role in describing algorithmic complexity. This is a beautiful bit of work, even if you’re already wise to O(log n) and O(n^2).
Tests Are Dead. Meticulous AI Is Here — Meticulous creates and maintains a continuously evolving E2E UI test suite with zero developer effort. Built on Chromium with a deterministic engine, it’s the only testing tool that eliminates flakes. Relied on by Dropbox, Notion, and Wiz.
Meticulous AI sponsor
New in ESLint v9.34.0: Multithread Linting — A common feature of tools like Rslint, Biome, and Oxlint, is being 'Nx times faster' than ESLint, but the latest ESLint has a trick up its sleeve and can now process multiple files at the same time, dramatically reducing lint times for large projects.
🇺🇸 CascadiaJS is a conference taking place September 18-19 in Seattle, WA.
RELEASES:
Rspack 1.5 – The fast web bundler improves barrel file optimization, has a faster file system watcher, improved browser support, and more. It's a big release.
Node.js v24.7.0 (Current) – A step forward for cryptography, both with Web Cryptography API support and post-quantum standards.
Speeding Up the JavaScript Ecosystem: Semver — The latest in Marvin’s multi-year series of posts on optimizing heavily used parts of the JavaScript ecosystem: “During the installation process, package managers run a bunch of semver comparisons. The semver library used in npm, yarn and pnpm can be made around 33x faster.”
Marvin Hagemeister
Say Bye with JavaScript Beacon — The Beacon API has been supported in all mainstream browsers for years now and provides a way to send a guaranteed (even if a page is being unloaded) non-blocking request to a web server when no response is needed.
📄 Speeding Up Firefox Local AI Runtime – How Firefox accelerated inference by replacing the WASM-based ONNX runtime that powers Transformers.js with a native C++ counterpart. Ziadé, Adenot, and Guelton
Obs.js: Context-Aware Web Performance for Everyone — Uses the Navigator and Battery APIs to get contextual information about your users’ connection strength and battery status so you can adapt your site/app to the environment or collect the data for analysis.
☀️ We're back after a week off, though I'm starting to think we should have taken two weeks off as it's been quite quiet in JavaScript-land this August! Nevertheless, we still have a full issue for you today, so let's get on to it.. ;-) __ Peter Cooper, your editor
JavaScript Weekly
Eliminating JavaScript Cold Starts on AWS Lambda — Porffor is a rapidly developing ahead-of-time JavaScript compiler with a major benefit being extremely quick process launch times (think sub-millisecond). This is certainly more a taste of the future, and something to experiment with, rather than something you want to imminently deploy into production.
jQuery 4.0.0 Release Candidate 1 — Version 4.0 of jQuery has reached the “we think this is ready; now poke it with many sticks” stage. While jQuery is still heavily used, we know it’s old-fashioned, but it was so important in the early days of JavaScript Weekly that we have a major soft spot for it!
Timmy Willison
Reflections on the React Community — Lee, formerly of Vercel and widely recognized for his influence on Next.js and React, shares candid reflections on the React community, digging into the rise of React Server Components, the tension between commercial and non-commercial priorities, the toll of burnout, and a reminder that, above all, this is still a community of people.
Lee Robinson
IN BRIEF:
Minification Benchmarks is a frequently updated benchmark of different JavaScript minifiers, with cminify being the newest addition.
Using the Custom Highlight API — The CSS Custom Highlight API offers a way to style text ranges on a document using JavaScript to create the ranges, and CSS to style them. And, as of Firefox 140, all major browsers now support it. This could be great for in-page search or even dynamic syntax highlighting.
▶ React Mock Interview: Three Devs Take on a Challenge — Three top developers take on the same React challenge to build a form complete with validation. If you’ve got the time for a 50 minute video, this is fun and educational.
Uppy 5.0: A Powerful, Modular JavaScript File Uploader — Upload not just from local sources (whether files or a webcam) but also remote services like Dropbox or Google Drive. Integrates with frameworks like React, Vue, Svelte, and Angular, and supports resumable uploads too. GitHub repo.
Minecraft MCP Server: Let an LLM Take Control of Minecraft — A fun way to play around with MCP servers and LLMs. It uses Mineflayer, a JavaScript API for creating Minecraft bots, behind the scenes. The video in the README is cool, showing how Claude and this server can turn a photo of the White House into an in-world creation.
Yuniko Software
Waku 0.25 – The minimal React framework introduces the concept of 'slice components' – a new approach to fine-grained component rendering.
Retire.js 5.3 – A security scanning tool to detect the use of JavaScript libraries with known vulnerabilities in your project.
Ky 1.9 – Simple HTTP client based upon Fetch for browsers, Node & Deno.
Repomix 1.3 – Pack an entire repository into a single, LLM-friendly file.