Node.js 24 Release Notes
Node.js 24.0.0, codenamed Krypton, is the latest major release of the popular JavaScript runtime. Released on May 6, 2025, it introduces key upgrades like V8 engine version 13.6, npm 11, and Undici 7. This version focuses on better performance, new JavaScript features, and smoother developer tools. It starts as the Current release and will enter Long Term Support in October 2025, with end-of-life planned for April 2028.
Developers will find improvements in async context handling, global APIs for URL patterns, and a more efficient test runner. The release includes over 30 semver-major commits, numerous bug fixes, and removals of outdated features to keep the platform modern. It also drops support for older build tools like MSVC on Windows, requiring ClangCL instead. These changes make Node.js 24 faster and more secure for building servers, web apps, and command-line tools.
V8 Engine Updates
The V8 JavaScript engine has been updated to version 13.6, bringing fresh features and performance boosts. One big addition is the global Float16Array, which lets developers work with 16-bit floating-point numbers directly without extra imports. Explicit resource management is now enabled by default, helping manage memory better in complex apps.
Internal tweaks include using newer V8 APIs for string handling, like WriteUtf8V2 and Utf8LengthV2, which speed up operations. The build system now uses V8's own CppHeap, and old dependencies like simdutf have been removed. These updates mean smoother integration with modern JavaScript and lower overhead in runtime execution.
npm and Package Management
Node.js 24 bundles npm version 11.0.0, with patches up to 11.3.0 included. This upgrade improves speed when installing packages, strengthens security checks, and handles modern JavaScript modules more reliably. Developers can expect fewer errors with lockfiles and better support for workspaces in large projects.
The npm team focused on compatibility, so it works well with the new V8 features. For example, it now processes dependencies faster, reducing build times in CI/CD pipelines. If you're managing complex node_modules folders, this version cuts down on disk usage and resolves conflicts more efficiently.
Networking and HTTP Enhancements
Undici, the library behind the built-in fetch API, jumps to version 7.x, from 7.1.0 to 7.8.0. This brings big performance gains for HTTP requests, like faster parsing of responses and better memory use during streaming. It also adds support for advanced HTTP features, making it easier to build APIs that handle high traffic.
HTTP/2 gets upgrades too, including session tracking to debug connections better, graceful server shutdowns to avoid data loss, and raw header arrays for custom protocols. The fetch function now respects proxy settings via NODE_USE_ENV_PROXY, which simplifies setups in corporate networks. On the TLS side, old methods like createSecurePair are gone, pushing users toward secure modern alternatives.
Test Runner Improvements
The built-in test runner in Node.js 24 is more powerful and user-friendly. Subtests now wait automatically for promises, so you don't need to add await everywhere -- this cuts boilerplate and reduces flaky tests. New global hooks, globalSetup and globalTeardown, let you run code once before and after all tests, perfect for database setup or cleanup.
Watch mode is smarter: it recalculates run times on restarts, adjusts column widths for file lists, and applies timeouts per test to catch hangs early. You can also mock JSON modules directly, which helps test imports without real files. These changes make testing faster and more reliable, especially in large codebases with many async operations.
Other Notable Changes
AsyncLocalStorage now defaults to AsyncContextFrame for tracking async operations with less overhead -- this boosts performance in event-driven apps. The URLPattern API is available globally, so no import is needed for matching URLs in routes or APIs.
The permission model flag simplifies to --permission from the experimental one, giving finer control over file and network access. Worker threads gain getHeapStatistics() to monitor memory usage. SQLite gets new methods like location, transaction checks, and better iterators for database work.
REPL improvements include multiline command history and stricter input validation. Build changes drop MSVC on Windows (use ClangCL), raise macOS to 13.5, and mark some architectures as experimental. Other graduations include import.meta properties and top-level WebAssembly support.
Deprecations
Several legacy features are deprecated to encourage modern practices. url.parse() is now runtime-deprecated -- switch to the WHATWG URL API for better standards compliance. SlowBuffer is on its way out, as regular Buffers handle everything faster.
Instantiating REPL without new, using Zlib classes without new, and passing args to spawn or execFile are deprecated. File constants like fs.F_OK get runtime warnings. Network tweaks deprecate net._setSimultaneousAccepts(), and REPL's builtinModules is phased out. These steps clean up the API for future stability.
Breaking Changes
Node.js 24 includes semver-major updates that may require code adjustments. Float16Array is now a global, and explicit resource management is always on, which could affect memory patterns in old scripts.
AsyncLocalStorage's default switch to AsyncContextFrame changes context propagation -- test async flows if you rely on custom storage. URLPattern going global means no more named imports. Removals include tls.createSecurePair, fs.truncate with file descriptors, and internal headers in HTTP messages.
Other breaks: no more dirent.path, obsolete Cipher exports, undocumented process bindings, and process.execve on Windows. V8 internals bump the module version to 137, so native addons need recompiles. Review these if migrating from Node.js 22 or earlier.
Migration and Support
Upgrading to Node.js 24 is straightforward for most projects, but check for deprecations and breaks using tools like npx node-check. Native modules may need rebuilding due to V8 changes. The release prioritizes security and performance, with ongoing patches for the Current phase until LTS.
Support timeline: Active until October 2025, then Maintenance until April 2027, and LTS until April 2028. For production, stick to LTS versions like 22 until 24 stabilizes. Community resources and docs cover migration guides to ease the switch.