Change8

v24.0.0

Breaking Changes
📦 node-jsView on GitHub →
5 breaking5 features🐛 4 fixes5 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

  1. Switch Windows build toolchains from MSVC to ClangCL.
  2. Replace url.parse() calls with 'new URL()'.
  3. Update scripts using --experimental-permission to use --permission.
  4. Ensure Zlib and REPL instances are created using the 'new' keyword.
  5. Remove manual awaits for subtests in the native test runner if they cause logic conflicts.
  6. 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.