v24.0.0
Breaking Changes📦 node-jsView on GitHub →
⚠ 5 breaking✨ 5 features🐛 4 fixes⚡ 5 deprecations🔧 12 symbols
Summary
Node.js 24 updates the V8 engine to 13.6 and npm to 11, while promoting URLPattern to a global and stabilizing the Permission Model flag. It introduces several runtime deprecations for legacy APIs and mandates ClangCL for Windows compilation.
⚠️ Breaking Changes
- Support for MSVC has been removed for Windows compilation. Developers must now use ClangCL to compile Node.js on Windows.
- The deprecated tls.createSecurePair API has been removed. Applications using this must migrate to tls.Socket.
- AsyncLocalStorage now uses AsyncContextFrame by default, which may affect advanced asynchronous tracking implementations.
- The experimental permission flag has changed from --experimental-permission to --permission.
- The test runner now automatically waits for subtests; manual awaiting of test promises may lead to unexpected behavior if not adjusted.
Migration Steps
- Switch Windows build toolchains from MSVC to ClangCL.
- Replace url.parse() calls with 'new URL()'.
- Update scripts using --experimental-permission to use --permission.
- Ensure Zlib and REPL instances are created using the 'new' keyword.
- Remove manual awaits for subtests in the native test runner if they cause logic conflicts.
- Replace tls.createSecurePair with tls.Socket.
✨ New Features
- Upgrade to V8 13.6, introducing Float16Array, Explicit Resource Management, RegExp.escape, WebAssembly Memory64, and Error.isError.
- Upgrade to npm 11 with enhanced performance and security features.
- URLPattern API is now available as a global object.
- Upgrade to Undici 7 for improved HTTP client capabilities.
- Test runner now automatically handles subtest completion.
🐛 Bug Fixes
- Fixed test-fs-write for compatibility with V8 13.6.
- Fixed V8 TLS configuration for shared library builds.
- Unregister the isolate after disposal and before freeing to prevent memory issues.
- Updated V8 gypfiles and license-builder for dependency compliance.
Affected Symbols
⚡ Deprecations
- Runtime deprecation of url.parse(): use the WHATWG URL API instead.
- Runtime deprecation of SlowBuffer.
- Runtime deprecation of instantiating REPL without the 'new' keyword.
- Deprecation of using Zlib classes without the 'new' keyword.
- Deprecation of passing 'args' to 'spawn' and 'execFile' in the child_process module.