Change8

Migrating to Node.js v22.17.0

Version v22.17.0 introduces 2 breaking changes. This guide details how to update your code.

Released: 6/25/2025

2
Breaking Changes
4
Migration Steps
15
Affected Symbols

⚠️ Check Your Code

If you use any of these symbols, you need to read this guide:

http.IncomingMessagehttp.ServerResponsechild_processhttp2.Http2Stream.priorityassert.partialDeepStrictEqualfs.FileHandle.readableWebStreamfs.Dirhttp2.server.stream.finishutil.styleTextfs.globfs.openAsBlobURL.createObjectURLv8.setHeapSnapshotNearHeapLimitAsyncLocalStoragecrypto.constants.OPENSSL_IS_BORINGSSL

Breaking Changes

Issue #1

Instantiating node:http classes like IncomingMessage or ServerResponse without the 'new' keyword is now discouraged and may throw errors in future versions. Use 'new IncomingMessage()' instead.

Issue #2

Using an empty string for options.shell in node:child_process is now discouraged as it previously had undefined behavior. Use 'shell: true' or an explicit shell path.

Migration Steps

  1. 1
    Update node:http class instantiations to always use the 'new' keyword.
  2. 2
    Replace options.shell = "" in child_process calls with 'shell: true' or a specific shell path.
  3. 3
    Remove dependencies on HTTP/2 stream.priority as the API is deprecated.
  4. 4
    Update tests to use the now-stable assert.partialDeepStrictEqual() where partial object matching is required.

Release Summary

This release stabilizes several utility and file system APIs, introduces explicit resource management for directory handles, and deprecates legacy behaviors in the HTTP and child_process modules.

Need More Details?

View the full release notes and all changes for Node.js v22.17.0.

View Full Changelog