TC39: No to records and tuples, yes to enums

#​732 — April 18, 2025

Read on the Web

🥚 A Good Friday, if you celebrate Easter at all. We’re taking a little break but didn’t want to take the entire week off, so we have a slimline issue for you today 🙂 We’ll be back to full service next Friday!
__
Peter Cooper, your editor

JavaScript Weekly

The ECMAScript Records and Tuples Proposal Has Been Withdrawn — Several years in the making, the record and tuples proposal offered two new deeply immutable data structures to JavaScript, but at this week’s TC39 meeting, the consensus was to drop it.

There have, however, been some more positive updates:

A proposal for introducing enums to JavaScript has advanced to stage 1. It seeks the adoption of a compatible form of TypeScript’s enum declaration. Slidedeck here.

The Deferred re-exports proposal has advanced to stage 2. There’s a slidedeck walking through the feature.

The Upsert and Composites proposals have been advanced.

It’s worth following Rob Palmer if you want to keep up to date with TC39 goings-on as he’s always sharing the latest news.

Plug & Play Image Editor For Your Web App — Save yourself the headache of building an image editor. Import the pintura module, give it an image source, and instantly get features like cropping, rotating, resizing, and annotation. Need help? Support has you covered. Try it for free today.

Pintura sponsor

Hako: A New High-Performance Embeddable JavaScript Engine — A fork of PrimJS (which is, itself, built on top of QuickJS) that compiles down to WebAssembly and can act as a portable, embeddable JavaScript engine for other apps (here’s an example of using it in a Go app).

Andrew Sampson

IN BRIEF:

Mozilla has enabled its Temporal implementation by default as of Firefox 139.

📘 Dr. Axel Rauschmayer has released Exploring TypeScript: TS 5.8 edition, a book bringing together all of his recent research into modern TypeScript development. You can buy the book but also read it all online for free in HTML form, if you prefer.

ESLint has added support for ‘bulk suppressions’, a way to make adopting stricter linting rules more manageable.

Dan Abramov is back with JSX Over The Wire, a fantastic meditation on the evolution of passing data and behavior between servers and clients and how things could get even better.

🤖 Microsoft’s Burke Holland ▶️ shows off VS Code’s new ‘agent mode’ feature which really makes Copilot far more powerful and a fine alternative to dedicated AI-powered editors. I’ve been using it a lot this week.

Google has made Firebase App Hosting generally available. It offers a streamlined, fully-managed deployment process for Angular and Next.js apps.

Sacha Greif, the name behind the State of JavaScript survey, has just launched the first ‘State of Devs’ survey. 🗳️ You can fill it out here.

RELEASES:

Astro 5.7 – The popular content framework gains an experimental fonts API, its sessions API is now stable, and there’s support for using local SVG files as components.

WebStorm 2025.1 – JetBrains’ JavaScript IDE – fresh with big AI, Angular, monorepo, and Next.js enhancements.

tldts 7.0 – URL parsing library to extract domains, subdomains, suffixes, etc.

gridstack.js 12.0 – Build responsive interactive dashboards quickly.

Lexe – Package a Node app into a single, small executable.

DOCX 9.4 – Generate Word documents from JavaScript.

Redux Toolkit 2.7, Bun v1.2.10, Babylon.js 8.3, Rambda 10.0

📖  Articles and Videos

A Flowing WebGL Gradient, Deconstructed — Even if you don’t want to render a neat plasma-style effect on the Web, this is a wonderfully deep exploration of the math and technology behind doing so using simple GLSL code that could be easily understood by any JavaScript developer.

Alex Harri

💡 If you like stuff like this, this CodePen of a GLSL-based swirl effect is neat too.

Advanced React in the Wild — A round-up of case studies showing how five different engineering teams have pushed React to the limit in production and their real-world wins in areas like performance, Core Web Vitals, caching, and more. A lot to enjoy here.

Addy Osmani and Hassan Djirdeh

📺 Building Single Page Apps with SvelteKit – And not only that, you can create SvelteKit apps in a single HTML file that can run without a Web server. (15 minutes) Stanislav Khromov

📄 How I Track My Blog’s Analytics with Val Town Orestis Papadopoulos

📄 Deploying TypeScript: Recent Advances and Possible Future Directions Dr. Axel Rauschmayer

📄 Zero-Config Debugging with Deno and OpenTelemetry Casonato and Jiang (Deno)

📄 Creating an AI Chat Experience with React and OpenAI Robin Wieruch

Comparing Tauri and Electron

#​731 — April 11, 2025

Read on the Web

JavaScript Weekly

🤖 Firebase Studio: Google’s New Agentic AI-Powered Development Environment — Buzzing from the success of Gemini 2.5 Pro for dev tasks, Google’s Firebase team gets in on the AI development action with a Cursor/v0/Lovable-a-like of its own for building apps in the browser.

Google

Some Features Every JavaScript Developer Should Know in 2025 — A quick list post breezing through a few more modern areas of JavaScript including iterator helpers, structuredClone(), and set operations.

Suren Enfiajyan

Next.js Fundamentals, v4 — Master Next.js with Scott Moss. Learn React Server Components, Server Actions, dynamic routing, authentication, caching, and edge functions. Create a modern React app, deploy it to Vercel, and level up your skills.

Frontend Masters sponsor

Node.js Testing Best Practices — A detailed guide to modern testing in Node from a group of developers who know all about it. It’s on GitHub, but essentially written like a free book covering over 50 battle-tested tips covering areas as diverse as the ‘Testing Diamond’, testing microservices, and simulating flaky networks.

Goldberg, Salomon, and Gluskin

IN BRIEF:

There’s speculation that the npm registry may have wiped all access tokens. If you’re having problems, the status update recommends creating new tokens while they attempt to restore them.

☁️ It’s been a busy week for Cloudflare! It now has an easy way to deploy Next.js apps to Cloudflare Workers, you can add a ‘deploy to Workers’ button to your Git repos, v1 of their Cloudflare Vite plugin has been released, and you can now deploy an entire frontend, backend, and database (supporting React Router, Astro, Vue.js, Svelte and more) in one Worker.

The RedwoodJS team has an update on the future of Redwood and what the ‘next epoch’ holds for the React-based framework.

p5.js 2.0 looks like it’ll be with us soon – its eighth beta has just landed. The release notes for beta 2 give an extensive idea of what’s coming.

🇷🇴 The annual JSHeroes conference is taking place this May 29-30 in Cluj, Romania.

RELEASES:

TypeSpec 1.0-RC – Microsoft’s language for defining cloud service APIs and shapes.

pnpm 10.8 – The alternative, efficient package manager.

Prisma 6.6 – Popular ORM for Node.js and TypeScript.

React Native 0.79 – Faster, faster, faster.

Bun 1.2.9, Tailwind CSS 4.1, CKEditor5 45, Zod 4 Beta

📒 Articles & Tutorials

Comparing Tauri and Electron for Building Desktop AppsElectron is a natural choice for building JS and HTML-powered cross-platform desktop apps but numerous alternatives have appeared like Neutralinojs and the Rust-based Tauri. This post does a good job of quickly showing how Tauri differs and why you might choose it.

Costa Alexoglou

Mastering Default Values with Nullish Coalescing (??) — Matt’s a big fan of the ?? operator over the || approach, largely due to JavaScript’s ideas of what it considers ‘falsy’.

Matt Smith

How Clerk Integrates with a Next.js Application Using Supabase — Learn how Supabase + Clerk work with Next.js to increase security and reduce development hours.

Clerk sponsor

Accelerating Large-Scale Test Migration with LLMs — How Airbnb completed its first large-scale, LLM-driven code migration in moving from Enzyme to React Testing Library.

Charles Covey-Brandt (Airbnb)

React Reconciliation: The Hidden Engine Behind Your Components — React uses a reconciliation algorithm to update the DOM based on changes to the virtual DOM. Understanding how it works is essential for producing faster apps.

Christian Ekrem

Hiding Elements That Require JavaScript Without Using JavaScript — If you’ve got non-essential features that require JavaScript and you want to hide them for users who have JavaScript disabled for whatever reason, this is a tidy old-school way to do it.

Dade

📄 Debugging JavaScript Memory Leaks in Bun Jarred Sumner

📄 Using Chrome’s (Preview) Prompt API for Data Summarization Raymond Camden

📄 How to Easily Reproduce a Flaky Test in Playwright Nicolas Charpentier

📄 Securing a Vue App with OpenID Connect and the BFF Pattern – That’s Backend-for-Frontend, not Best Friends Forever. Khalid Abuhakmeh

📄 The Case for Web Components with Lit Philipp Kunz

🛠 Code & Tools

Next.js 15.3: Now Including Turbopack Builds — The popular React framework now includes alpha support for using Turbopack for much faster production builds (especially if you have lots of cores available), community support for Rspack, and new navigation hooks.

The Vercel / Next.js Team

Chrono 2.8: A Natural Language Date Parser — Give it a string like “today”, “last Friday”, “2 weeks from now”, or even an entire date and time, and it’ll come up with a date object to suit.

Wanasit Tanakitrungruang

Breakpoints and console.log Is the Past, Time Travel Is the Future — 15x faster JavaScript debugging than with breakpoints and console.log, supports Vitest, Jest, Karma, Jasmine, and more.

Wallaby Team sponsor

🎵 Communicate with Ableton Live via WebSocketsAbleton Live is a popular DAW (digital audio workstation) and this opens up a way to control it from JavaScript.

Ricardo Matias

🕒 Spacetime 7.9 – Lightweight timezone library. Now supporting formatting times in SQL ISO format.

📊 Perspective 3.5 – Streaming data viz and analytics component. The core is written in C++ and compiled to WASM.

Embla Carousel 8.6 – Lightweight carousel library with fluid motion and swipe precision.

simpleParallax.js 6.1 – Add parallax effects to any image.

Tesseract.js 6.0.1 – Pure JS OCR for 100+ languages.

📰 Classifieds

Meticulous automatically creates and maintains an E2E UI test suite with zero developer effort. Relied on by Dropbox, Lattice, Bilt Rewards, etc.

Working on the frontend? 🚀 Frontend Focus is a weekly update — trusted by 75,000+ devs — covering the essential trends, tools and tips that matter.

📢  Elsewhere

A quick roundup of other interesting updates and useful resources from across the broader developer landscape:

Git has turned 20 years old and GitHub’s Taylor Blau caught up with Linus Torvalds to discuss the milestone and the background to the project.

Tired of hearing about TypeScript? Why not experiment with programming in PostScript and running games on your printer?

Minimal CSS-only Blurry Image Placeholders is an article showing off a very clever technique for using CSS to dynamically create blurry image placeholders prior to an image loading in.

Mozilla’s Simon Pieters tells us that default styles for H1 elements are changing and browsers are starting to roll out changes in default styles for nested section headings.

Docker has released a new extension for VS Code in a collaboration with the Microsoft Container Tools team.

The JavaScript trademark fight rumbles on

#​730 — April 4, 2025

Read on the Web

JavaScript Weekly

Bare: A New Lightweight Runtime for Modular JS Apps — Imagine something like Node.js but really stripped back: bare, if you will. Like Node, it’s built on top of V8 and libuv (though it’s designed to support multiple JavaScript engines) but Bare’s approach is to provide as little as possible (a module system, addon system, and thread support) and then rely upon userland modules that can evolve independently of Bare itself. It’s an interesting idea – more details here.

Holepunch

An Update on the Deno v Oracle JavaScript™ Fight — Deno filed a petition with the USPTO to cancel the ‘JavaScript’ trademark, as claimed by Oracle, and Oracle stepped up to fight back. Ryan recaps the basic story and asks for help to get the word out (signing the open letter is a great start, if you agree Oracle abandoned the trademark).

Ryan Dahl

AG Grid: The Best JavaScript Data Grid In The World — Create high-performance data grids with our open-source library, trusted by 90% of the Fortune 500. Add advanced features like Integrated Charting, Grouping, Pivoting and more with a few lines of code. Supports React, Angular and Vue. Try for free.

AG Grid sponsor

React 19.1 Released — The headline feature is Owner Stacks, a dev-only feature to track which components are responsible for rendering other components. 19.1 also brings fixes, small additions (like support for streaming in edge environments), a new API for prerendering RSCs on the server, and enhanced Suspense support.

Matt Carroll (Facebook)

IN BRIEF:

Safari 18.4 has been released with Declarative Web Push support, iterator helpers, Error.isError, and faster JSON.parse and JSON.stringify functions.

There’s a longstanding proposal to bring TS-style enums to JavaScript and author Ron Buckton will be pitching it to TC39 at its next meeting. Here’s a slidedeck covering the benefits. Thanks to Rob Palmer for highlighting this.

The ES2025 spec has reached candidate stage in anticipation of being finally approved in June.

RELEASES:

Express 5.1 – The long standing Node.js web framework gets a bump with 5.x finally becoming the latest tagged version on npm.

React Email 4.0 – Components and tools for rendering HTML emails.

zx 8.5 – Google’s tool for better Node shell scripting.

Astro 5.6, Ember 6.3, Turborepo 2.5, Node.js v23.11.0, Bun v1.2.8

📒 Articles & Tutorials

Exploring Art with TypeScript, Jupyter, Polars, and Observable Plot — One of Deno’s compelling features is its support for Jupyter Notebooks and easy notebook-style programming, such as is common in the Python world. Trevor looks at a practical use of using such a notebook environment for data exploration.

Trevor Manz

Could JavaScript Have Synchronous await? — Dr. Axel reflects on the problems around async code being different to synchronous code and ways around the limitations faced. What could the consequences of a synchronous await be?

Dr. Axel Rauschmayer

Hands-On Debugging Session: Instrument, Monitor, and Fix — Build it, break it, debug it, and fix it — with Sentry. See how to get set up, track errors, use Session Replay and the new Trace Explorer, plus leverage AI to find and fix issues fast.

Sentry sponsor

JavaScript’s Missing Link? Wasp Offers a Full Stack Solution — A look at what the Wasp team is trying to do building a full-stack webapp framework around React, Node, and Prisma. It’s a powerful option if you’re looking for a more traditional-feeling full-stack approach.

Loraine Lawson (The New Stack)

🚂 How a Steam Locomotive from 1993 Broke My Yarn Test – A fun bug hunting tale that actually delivers on its title. Yew Leong

📄 Breaking Down Circular Dependencies in JavaScript Bryan Braun

📄 Automated Visual Regression Testing with Playwright Frederik Dohr

📄 Lessons Learned From My First Dive Into WebAssembly Chris Wellons

🛠 Code & Tools

Anime.js 4.0: A JS Animation Library for the Web — If you’re tired of Web animations, maybe Anime.js will refresh your appetite. This is a major upgrade to a mature library for animating CSS properties, SVGs, the DOM, and JS objects. It’s smooth, well-built, and now complete with fresh documentation.

Julian Garner

Learn How to Integrate Clerk with Lovable — Lovable integrates Clerk for custom domains, streamlined auth flows, and waitlist-powered onboarding.

Clerk sponsor

Milkdown 7.7: WYSIWYG Markdown Editor Framework — A WYSIWYG Markdown editor framework based around a plugin system that enables a high level of customization. The docs are rendered by Milkdown itself. GitHub repo.

Mirone

TinyBase v6.0: A Reactive Data Store for Local-First Apps — We’re huge fans of this powerful reactive data store that can be used as the entire backend for many types of app. v6.0 adds no new functionality but brings React 19 support and goes ESM-only. Check out the homepage for more.

James Pearce

🤖 node-llama-cpp 3.7 – Run LLMs locally with bindings to llama.cpp.

bignumber.js 9.2 – Arbitrary-precision decimal and non-decimal arithmetic.

TS-Pattern 5.7 – Pattern matching library with smart type inference.

React Admin 5.7 – Framework for building B2B frontend interfaces.

UVCanvas 0.3 – Render beautifully shaded canvases from React.

Danfo.js 1.2 – Pandas-inspired JavaScript data analysis toolkit.

Vuetify 3.8 – Vue component framework.

📰 Classifieds

Meticulous automatically creates and maintains an E2E UI test suite with zero developer effort. Relied on by Dropbox, Lattice, Bilt Rewards, etc.

✉️ Don’t forget we have two other JavaScript related newsletters if you work with Node.js or React: Node Weekly and React Status respectively.

📢  Elsewhere

A quick roundup of other interesting updates and useful resources from across the broader developer landscape:

If you fancy writing a blog post that could make it into JavaScript Weekly, checking out How to Write Blog Posts that Developers Read by Michael Lynch isn’t a bad idea.. 🙂 (Then hit reply and tell us about it!)

Chrome 135+ includes support for the CSS Overflow 5 spec which makes it easier to create native scrolling and carousel experiences.

Yoni Goldberg writes about the sweet and powerful ‘use case’ code pattern.

Some tips from GitHub for project maintainers: 5 GitHub Actions Every Maintainer Needs to Know

🤖 The New Stack’s Alex Williams looks at how AI agents are transforming frontend development.