Node.js 25.4.0, the newest Current branch release, is now available for download. This update focuses on transitioning many performance and debugging features out of experimental status and marking them as stable. So, this update is great for large, high-performance applications.
The biggest news here is the stabilization of the module compile cache. Node.js now officially marks the module compile cache as stable, a move that should immediately impact performance, especially startup times for large codebases. This feature lets you compile modules ahead of time. This cuts down on the parsing and compilation overhead that often slows down initialization.
Alongside this, the --build-snapshot and --build-snapshot-config command line options are also marked as production-ready. These snapshot tools work together with the compile cache to let you generate pre-compiled environments. This is a huge win for speed optimization, and it means we can start using these tools reliably without worrying about them changing or disappearing.
Module interoperability is also getting a major step forward in this version. The ability to require(esm) is now officially stable. This feature has been a long time coming for developers working in mixed environments. It significantly simplifies the process of integrating ES Modules into existing CommonJS applications.
You can expect much smoother transitions when mixing module formats going forward. We also see some flexibility added to module paths. The update also allows subpath imports that start with a hash symbol, like #/. This provides a more flexible way to define and reference internal package paths.
Debugging and profiling tools are also seeing stability improvements, which is fantastic for diagnosing tricky memory issues. The --heapsnapshot-near-heap-limit option finally graduated from experimental status. This option automatically triggers a heap snapshot when memory usage approaches a predefined limit. Additionally, the v8.queryObjects() method is also marked as stable, which gives you a nice tool for inspecting V8 objects during runtime.
On the networking side, Node.js is adding a small but important quality-of-life feature for those working behind corporate or complex network setups. The new http.setGlobalProxyFromEnv() function is included as a semver-minor change. This function lets you configure a global HTTP proxy directly through environment variables, which is much more convenient than manually setting up proxy configurations within your application code. This is particularly helpful for developers working in enterprise environments where proxy settings are mandatory.
We also see general polish across the core utilities. The util module has a new function called convertProcessSignalToExitCode. This utility helps you handle process signals in a more predictable way, converting termination signals into standard exit codes. The internal assertion and utility functions also got updates, with the team specifically focused on comparison speed and fixing issues related to the deep comparison of invalid dates. This makes the core more reliable and faster.
As always, the release includes important dependency updates. Node.js 25.4.0 upgrades the bundled npm package to version 11.7.0. It also includes an update to the root certificates used by the crypto module, moving to NSS 3.117.
You can download and test these stable features today. Node.js 25.4.0 is available across all major platforms, including Windows, macOS (Intel and Apple Silicon), and various Linux distributions. You can find the installers and binaries directly on the Node.js website.
Source: Nodejs Blog
