Subscribe to the feed

The Node.js community is once again gearing up for a major release with Node.js 24. This release line is an even-numbered one, which means that it will be promoted to long-term support (LTS) in October 2025 and receive support until April 2028.

Before Node.js 24 is officially promoted to LTS, the team needs help from the community to test it and share feedback. That way, any issues can be caught early, making the release smoother for everyone.

For those using Red Hat Enterprise Linux (RHEL), Node.js support will start after the release is promoted to LTS in October, which means you can expect to find packages for the RPM Package Manager (rpm) and containers around that time. However, to facilitate advanced testing, the Red Hat Node.js team plans to provide some unofficial container images stay tuned for more details.

Node.js remains a popular choice for backend JavaScript development, evidenced by its high download numbers from nodejs.org in the past year. In our opinion, it’s the best choice for those looking for a widely used and stable backend JavaScript runtime. This is why we make it available in RHEL as well as providing pre-built Node.js containers.

If you follow Red Hat’s work in the Node.js project, or have been following our regular updates, you’ll see that our strategy is to focus our community work on aspects we believe are important to our customers, including:

  • Stable and predictable releases
  • Platform support
  • Security
  • Diagnostics
  • Performance
  • Code quality

Our commitment to these priorities, combined with our internal and customer collaborations, which includes helping to keep the Node.js infrastructure running, keeping V8 running on the s390 and PPC architectures, integrating support for ubi into buildpacks, as well as our sharing of expertise in the Node.js reference architecture, has been keeping us busy.

At the time of Node.js 24, we are excited to share some recent features and ongoing initiatives that have piqued our interest, or in which our team has played a role. Due to how quickly features flow back into the existing Node.js release line, they may not all be technically new in Node.js 24 but they are worth mentioning as having landed since the last major release.

Highlights of recent additions and changes

Experimental TypeScript support

We were excited to cover experimental support for a subset of TypeScript in our introduction to Node.js 23.x. Since then the larger ecosystem has taken steps to more easily support using this subset in Node.js.

The first issue was that compiling the same TypeScript that Node.js could run was not easy because there was no set of options which would let you fully compile TypeScript which imported files with the .ts extension. People from the TypeScript and Node.js teams collaborated on a solution which was landed as the addition of --rewriteRelativeImportExtensions in https://github.com/microsoft/TypeScript/pull/59767.

The second issue was that it was too easy to use TypeScript options that could not be used with Node.js by default. This was addressed through the introduction of --erasableSyntaxOnly in TypeScript 5.8.  This option allows you to specify that tsc should only support the subset of TypeScript that will work with Node.js. You can read more about it here.

It's great to see the larger ecosystem working to make it easier to work with the experimental support for TypeScript in Node.js.

Continued progress on performance 

Performance continues to be an important area of progress for Node.js helping you get the most out of your existing systems. Of particular note, Node.js 24 includes updates to V8, Undici and the AsyncLocalStorage implementation.

This release includes a V8 update to V8 13.6. Since the last SemVer major this includes a number of new features. A few notables ones include:

  • A new API to pause execution for a specified duration
  • Support for 64-bit memory in WebAssembly
  • The new 'using' and 'await using' declarations for deterministic resource cleanup
  • A new static method to check if a value is an Error object

Many thanks to Michaël Zasso for all his work on helping the project upgrade to newer versions of V8.

Node.js 24 also updates Undici to the latest major version (7.X) which includes better performance and support for some additional HTTP features. You can read more about that here.

The last thing we will mention is the performance improvements made to the implementation of AsyncLocalStorage. This is an important API for production deployments when application performance monitoring (APM) tools are being used. You can read more about it in #55552.

npm 11.0.0

Node.js 24 comes with npm 11.0.0. A breaking change in this version of npm is that --ignore-scripts are no longer run for the prepared lifecycle script. You can read more about npm 11.0.0 in #56274.

Permission model improvements

Over the last few years, the permission model has been incrementally improved and marked as stable in v23.5.0. As part of completing this process the flag used to enable it has been changed from --experimental-permission to simply --permission. Many thanks to Rafael Gonzaga for all of the hard work he has put into the permission model..

Test runner enhancements

The behavior of the test runner module has been changed so that the runner now automatically waits for subtests to finish. This means you no longer need to await subtests. Here’s an example of what this looks like: 

test('top level test', async (t) => {
 await t.test('subtest 1', (t) => {
   assert.strictEqual(1, 1);
 });
 await t.test('subtest 2', (t) => {
   assert.strictEqual(2, 2);
 });
});

becomes

test('top level test', async (t) => {
 t.test('subtest 1', (t) => {
   assert.strictEqual(1, 1);
 });
 t.test('subtest 2', (t) => {
   assert.strictEqual(2, 2);
 });
});

and reduces the likelihood of common errors related to unhandled promises. Thanks to Colin Ihrig for his work on the test runner.

Progress on web compatibility 

As mentioned in previous blog posts, web compatibility continues to be a priority for the project and each release brings incremental improvements. In this release URL Pattern is now exposed on the global object which makes it easier to use. 

Platform support

Dependency updates in Node.js now require newer build toolchains on macOS and Windows.

  • For macOS, the minimum supported version is now macOS 13.5 and the minimum version of Xcode to build Node.js is now Xcode 16.1.
  • Windows builds now require ClangCL, those building their own binaries will need to switch as compiling with Visual Studio C++ compiler will no longer work.

Security and supply chain security

While security and supply chain security have always been important, the awareness and importance continues to grow. Within the Node.js project, a significant amount of effort is devoted to security-related work, ranging from identifying and resolving vulnerabilities to executing security releases.

Continued progress has been made on automating security releases, helping the project address vulnerabilities more quickly. Many thanks to funding from the OpenSSF to make this work possible.

We’d also like to express our appreciation to the companies and individuals who have stepped up to help with security releases as security release stewards or as part of the security triage team, the Release Working Group, and all those who contribute to the security release efforts. In particular we’d like to thank all of those involved in addressing the recent improvements to the CI with respect to supply chain security including our own Richard Lau who did a lot of the heavy lifting.

In line with what is important to our customers, Red Hat is proud to be doing part of this work through our involvement in the triage team, through security releases and by contributing to the efforts of the security working group team, along with all of the other contributors across the project.

Next-10

While major releases are the time people look at what’s new, it’s also important to look forward to what’s coming in the future. The project is working on that as part of the Next-10 effort and has defined the constituenciesneeds of those constituencies and the technical priorities based on those needs. 

The Next-10 team has just finished up the questions for this year's survey which should go out imminently. Keep a look out for it and contribute your feedback to help the project understand the ecosystems priorities. You can check out the results from last year's survey.

If you want to learn more about these initiatives or get involved you can check out the next-10 repo or join our biweekly meetings.

A big thank you

Our thanks go out to every individual involved in the initial 24.x release of Node.js. The project has a diverse group of contributors who work tirelessly, and each release is a culmination of their collective efforts.

The community Node,js blog and OpenJS blog contain more details about the latest enhancements and modifications.

For further insights on the Node.js community and ways to participate, visit the project repository and website. To explore Red Hat's involvement in the Node.js space, refer to the Red Hat Node.js Developers page. Additionally, Red Hat customers can go to the customer portal for additional information.


About the authors

Michael Dawson is an active contributor to the Node.js project and chair of the Node.js Technical Steering Committee (TSC). He contributes to a broad range of community efforts including platform support, build infrastructure, N-API, Release, as well as tools to help the community achieve quality with speed (e.g., ci jobs, benchmarking and code coverage reporting). As the Node.js lead for Red Hat and IBM, he works with Red Hat and IBM's internal teams to plan and facilitate their contributions to Node.js and v8 within the Node and Google communities. Dawson's past experience includes building IBM's Java runtime, building and operating client facing e-commerce applications, building PKI and symmetric based crypto solutions as well as a number of varied consulting engagements. In his spare time, he uses Node.js to automate his home and life for fun.

Read full bio

Richard Lau is an active member of the Node.js project's Build and Release Working Groups and Technical Steering Committee (TSC). Prior to working at Red Hat he spent 19 years at IBM working on their Java runtime and then Node.js runtime.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Browse by channel

automation icon

Automation

The latest on IT automation for tech, teams, and environments

AI icon

Artificial intelligence

Updates on the platforms that free customers to run AI workloads anywhere

open hybrid cloud icon

Open hybrid cloud

Explore how we build a more flexible future with hybrid cloud

security icon

Security

The latest on how we reduce risks across environments and technologies

edge icon

Edge computing

Updates on the platforms that simplify operations at the edge

Infrastructure icon

Infrastructure

The latest on the world’s leading enterprise Linux platform

application development icon

Applications

Inside our solutions to the toughest application challenges

Original series icon

Original shows

Entertaining stories from the makers and leaders in enterprise tech