Node.js 26.2.0 (Current)
TL;DR · AI Summary
Node.js 26.2.0 includes notable updates such as stream.compose stabilization, fs module support for Temporal.Instant, new HTTP writeInformation method, and multiple crypto security enhancements along with dependency upgrades.
Key Takeaways
- stream.compose is now stable for production use
- fs module adds support for Temporal.Instant for enhanced time handling
- HTTP module introduces writeInformation for sending arbitrary 1xx status codes
Outline
Jump quickly between sections.
Node.js 26.2.0 is a minor release with several notable changes.
The stream.compose API has been marked stable for production use.
fs module now supports Temporal.Instant in Stats and BigIntStats objects.
New writeInformation method allows sending arbitrary 1xx HTTP status codes.
Multiple crypto enhancements including hardened key handling and improved algorithm validation.
Includes updates to undici, corepack, sqlite, and simdjson libraries.
Mindmap
See how the topics connect at a glance.
查看大纲文本(无障碍 / 无 JS 友好)
- Node.js 26.2.0 Release
- API Stability
- stream.compose stable
- Enhanced Functionality
- Temporal.Instant support
- writeInformation for 1xx codes
- Security & Performance
- Crypto improvements
- Dependency upgrades
Highlights
Key sentences worth saving and sharing.
The stream.compose API has been marked stable, enabling its use in production environments.
fs module now supports Temporal.Instant in Stats and BigIntStats objects for better temporal data handling.
The new writeInformation method in http module allows sending arbitrary 1xx status codes.
[](https://nodejs.org/en)
[](https://github.com/nodejs/node)
Antoine du Hamel
[2026-05-20, Version 26.2.0 (Current), @aduh95](https://nodejs.org/en/blog/release/v26.2.0#2026-05-20-version-2620-current-aduh95)
[Notable Changes](https://nodejs.org/en/blog/release/v26.2.0#notable-changes)
- [`189d43a193`] - doc: mark
stream.composestable (Matteo Collina) #62562 - [`f858c6140e`] - (SEMVER-MINOR)fs: add
Temporal.Instantsupport toStatsandBigIntStats(Livia Medeiros) #60789 - [`0cbb3895df`] - (SEMVER-MINOR)http: add
writeInformationto send arbitrary 1xx status codes (Tim Perry) #63155
[Commits](https://nodejs.org/en/blog/release/v26.2.0#commits)
- [`9a394bab84`] - benchmark: respect stream/iter broadcast backpressure (Trivikram Kamat) #63314
- [`ad98b4620b`] - crypto: align verifyOneShot accepted types (Anshika Jain) #63280
- [`ba0736a847`] - crypto: wire ML-DSA and ML-KEM for use when using BoringSSL (Filip Skokan) #63255
- [`5573a6a4a8`] - crypto: wire ChaCha20-Poly1305 in Web Cryptography when using BoringSSL (Filip Skokan) #63255
- [`7dc563b8d6`] - crypto: wire AES-KW in Web Cryptography when using BoringSSL (Filip Skokan) #63255
- [`b55e2b1f4d`] - crypto: improve system certificate enumeration logic on macOS (Robo) #62576
- [`fd509a755a`] - crypto: harden CryptoKey algorithm slots (Filip Skokan) #63111
- [`8657df39e7`] - crypto: harden KeyObject internal slots (Filip Skokan) #63111
- [`729274e046`] - crypto: reject invalid raw key imports (Filip Skokan) #63134
- [`8fc9cb9c01`] - crypto: improve accuracy of SubtleCrypto.supports (Filip Skokan) #63104
- [`288065cb3f`] - crypto: optimize normalizeAlgorithm dispatch hot path (Filip Skokan) #62756
- [`ecf3797d09`] - debugger: disambiguate probe location binding (Joyee Cheung) #63286
- [`bdc57135fd`] - debugger: add --help to
node inspectand improve docs (Joyee Cheung) #63201 - [`2a6e6058e9`] - deps: update undici to 8.3.0 (Node.js GitHub Bot) #63377
- [`327b927271`] - deps: update corepack to 0.35.0 (Node.js GitHub Bot) #63375
- [`5828fadf52`] - deps: update sqlite to 3.53.1 (Node.js GitHub Bot) #63217
- [`fe127a999b`] - deps: update simdjson to 4.6.4 (Node.js GitHub Bot) #62811
- [`a34c4ea159`] - deps: V8: cherry-pick 435a2cdf664c (Matthias Liedtke) #63136
- [`ad91efcc43`] - deps: cherry-pick libuv/libuv@a43e543 (Ali Hassan) #63222
- [`5ea6c3ee7e`] - deps: add missing static linking targets for libffi (Paolo Insogna) #63168
- [`c1f6ba22b4`] - deps: update ngtcp2 to 1.22.1 (Node.js GitHub Bot) #62812
- [`7b8767ef76`] - doc: remove unsupported template type from v8.md (René) #63410
- [`b2ec1880b1`] - doc: fix promise nomenclature in
stream_iter.md(Antoine du Hamel) #63406 - [`cf6cbbd39d`] - doc: fix article usage before vowel-sound acronyms (joao-oliveira-softtor) #62696
- [`da05065d98`] - doc: remove the bi-monthly contributor spotlight section (Claudio Wunder) #62734
- [`c31f320fba`] - doc: update http2's
pushandtrailersevents withrawHeadersparam (YuSheng Chen) #63259 - [`f0d008439b`] - doc: add Rust toolchain manual installation instructions Windows (Mike McCready) #63367
- [`68b1220fbd`] - doc: remove inactive members from Triagers list (Antoine du Hamel) #63329
- [`189d43a193`] - doc: mark stream.compose stable (Matteo Collina) #62562
- [`c4fb894039`] - doc: fix CHANGELOG (Richard Lau) #63292
- [`9f319a77e4`] - doc: reference correct function in Module docs (Robin Malfait) #63247
- [`2c13acc88e`] - doc: replace Visual Studio 2022 Evergreen version reference with 17.14 (Mike McCready) #63211
- [`7e42c336c9`] - doc: recommend explicitly Tier 1 or 2 for production applications (Mike McCready) #63187
- [`d99e0bb6d5`] - doc: document Temporal configure flags in BUILDING.md (ChrisJr404) #63248
- [`c0ea77b305`] - doc: run license-builder (github-actions[bot]) #63232
- [`8265aba0f4`] - doc: add large pull requests contributing guide (Matteo Collina) #62829
- [`be241bacc8`] - doc: remove unnecessary
<!-- eslint-magic comments (Antoine du Hamel) #63200 - [`e0b1f092c3`] - doc: fix inconsistencies in CJS code snippets (Antoine du Hamel) #63199
- [`a3feb15871`] - doc: clarify SEA platform support excludes darwin-x64 (MJSHANG) #63181
- [`cafd7667fc`] - doc: improve quic documentation (James M Snell) #63157
- [`3c784edb6f`] - doc: update release steps when post-release fails (Rafael Gonzaga) #63131
- [`9de954e9be`] - doc: fix deprecation list in 26.0.0 changelog (Antoine du Hamel) #63147
- [`20c553e456`] - doc: add Hmac.digest() documentation-only deprecation (DEP0206) (Anshika Jain) #63121
- [`3494eae2c8`] - doc: document the latest-vX.x schema (Marco Ippolito) #63033
- [`c02413d29d`] - doc: remove list of versions in
BUILDING.md(Antoine du Hamel) #63113 - [`53f9a902a1`] - doc,sqlite: document entryPoint argument for loadExtension (Edy Silva) #63152
- [`f858c6140e`] - (SEMVER-MINOR)fs: add
Temporal.Instantsupport toStatsandBigIntStats(Livia Medeiros) #60789 - [`b2ba62ca0e`] - fs: make
Dateproperties onStatsenumerable (LiviaMedeiros) #63328 - [`0cbb3895df`] - (SEMVER-MINOR)http: add writeInformation to send arbitrary 1xx status codes (Tim Perry) #63155
- [`f712e6856e`] - http2: validate non-link headers in writeEarlyHints (Matteo Collina) #62017
- [`3acadae676`] - lib: fix typo idenity => identity (Daijiro Wachi) #63112
- [`460329e886`] - lib: fixes validator message (Daijiro Wachi) #62823
- [`9438c832b2`] - lib: narrow ReadableStreamBYOBRequest.view return type to Uint8Array (RoomWithOutRoof) #63017
- [`c7d27c82c4`] - lib: handle --permission-audit when propagating flags (Rafael Gonzaga) #63047
- [`9f19915276`] - lib: optimize webidl conversion options (Filip Skokan) #62756
- [`771afd626a`] - meta: move one or more collaborators to emeritus (Node.js GitHub Bot) #63402
- [`67d094a554`] - meta: move one or more collaborators to emeritus (Node.js GitHub Bot) #63235
- [`9091398f3d`] - meta: ignore AI assistants files (Matteo Collina) #62612
- [`96f19a16d0`] - module: fix sync hook short-circuit in require() in imported CJS (Joyee Cheung) #62920
- [`45f3e3ef11`] - node-api: support SharedArrayBuffer in napi_create_typedarray (Yilong Li) #62710
- [`d7afa617bb`] - quic: send correct OpenSSL alert for ALPN mismatches (Tim Perry) #63193
- [`526313beb8`] - quic: fixup quic stream variable chunk len (James M Snell) #63230
- [`1613c7fe70`] - quic: support --allow-net permissions (James M Snell) #63184
- [`72ab7444a8`] - quic: remove unused env_ variable in session_manager.h/cc (James M Snell) #63177
- [`2b55656778`] - quic: remove unused binding variable in session.cc (James M Snell) #63177
- [`83f0d37400`] - quic: ignore coverage for quic files (James M Snell) #63149
- [`7e6b77b14d`] - quic: complete the internal implementation of QUIC (James M Snell) #62876
- [`71372418f1`] - repl: fix dedup comparing normalized line against raw history (Daijiro Wachi) #62886
- [`20f40c2c25`] - sqlite: keep source database alive during backup (Matteo Collina) #62673
- [`592f741bd0`] - src: simplify OpenSSL feature gates (Filip Skokan) #63255
- [`520ab7ad40`] - src: add BoringSSL EVP enumeration fallback (Filip Skokan) #63206
- [`12be49acbc`] - src: support multiple versions in node.config.json (Marco Ippolito) #63033
- [`296f907585`] - src: remove unused using declarations in node_task_queue (Mert Can Altin) #63144
- [`7703f11b3c`] - src: skip JS callback for settled Promise.race losers (Felipe Coelho) #62336
- [`74ab710c3a`] - src,sqlite: remove dead code (Edy Silva) #63204
- [`e49154f4c8`] - stream: add sync iterable fast path to pipeTo (Trivikram Kamat) #63318
- [`537455e98d`] - stream: fix merge handling for object-like sources (Trivikram Kamat) #63356
- [`e21b8a47f0`] - stream: limit iter from sync iterable batches (Trivikram Kamat) #63324
- [`3bdb64dc67`] - stream: cache minimum cursor count in broadcast (Trivikram Kamat) #63322
- [`81819add6b`] - stream: remove unnecessary check (Antoine du Hamel) #63030
- [`22e3579d74`] - stream: avoid retrying accepted pipeTo writes (Trivikram Kamat) #63297
- [`691915ea94`] - stream: validate broadcast writer writev chunks (Trivikram Kamat) #63300
- [`253f5f4ca2`] - stream: uncork fromWritable writev on chunk error (Trivikram Kamat) #63295
- [`aa6913cc4a`] - stream: validate fromWritable() options before cache (Trivikram Kamat) #63278
- [`6c53ddb988`] - stream: optimize single-slot push queue drain (Trivikram Kamat) #63274
- [`b568649f6f`] - stream: preserve toReadableSync batch after backpressure (Trivikram Kamat) #63276
- [`cdcefd7e2f`] - stream: cache minimum cursor count in share (Trivikram Kamat) #63262
- [`ba7000e4f7`] - stream: minor stream/iter implementation edits (René) #63132
- [`c694999ab8`] - test: disable Maglev in near-heap-limit worker test (Trivikram Kamat) #63398
- [`a6d6d51c1b`] - test: deflake connection refused proxy tests (Trivikram Kamat) #63395
- [`31d89c4f59`] - test: avoid repeated writes in watch helper (Trivikram Kamat) #63386
- [`6f3587c773`] - test: deflake watch mode worker test (Trivikram Kamat) #63384
- [`a57aebaa73`] - test: update tls/crypto behaviour expectations when using BoringSSL (Filip Skokan) #63161
- [`b871cff2db`] - test: relax test-memory-usage arrayBuffers check (inoway46) #63244
- [`25189bcb95`] - test: reduce flakiness of
different-registry-per-thread(Antoine du Hamel) #63244 - [`5bdb1f8426`] - test: fix flaky test-watch-mode-inspect timeout (Matteo Collina) #63361
- [`d57bd2bf59`] - test: relax min assertion in test-performance-eventloopdelay (Marco) #63100
- [`014e1f00c1`] - test: avoid flaky restart sync in debugger exceptions test (Yuya Inoue) #62055
- [`dd28ff8a80`] - test: avoid initial-break wait in restart-message (inoway46) #62060
- [`e89a49a13a`] - test: move FFI tests to
NATIVE_SUITES(Antoine du Hamel) #63165 - [`51ef0258ba`] - test: update WPT for wasm/jsapi to 288c467d35 (Node.js GitHub Bot) #63136
- [`c0175a9ba1`] - test: use ERM to destroy sqlite database handles after tests (René) #63076
- [`83054e8aba`] - test_runner: avoid hanging on incomplete v8 frames (Ali Hassan) #62704
- [`4f1426d361`] - test_runner: fix hooks test context (Moshe Atlow) #63285
- [`6a4c4b7193`] - test_runner: fix diagnostics channel context tracking (Moshe Atlow) #63283
- [`eba9c3481b`] - test_runner: add tags option and tag-name filter (Chemi Atlow) #63221
- [`2ba124f23b`] - tls: add unsupported renegotiation error (Filip Skokan) #63161
- [`7c5048495a`] - tools: bump the eslint group in /tools/eslint with 4 updates (dependabot[bot]) #63075
- [`6c574110a7`] - tools: update gyp-next to 0.22.2 (Node.js GitHub Bot) #63374
- [`f14ed762b3`] - tools: add boringssl to tools/nix/openssl-matrix.nix (Filip Skokan) #63206
- [`14d3924c48`] - tools: fix test426 updater (Antoine du Hamel) #63271
- [`0d017ece8d`] - tools: filter V8 scripts for build toolchain (Richard Lau) #63069
- [`3859a8700e`] - tools: use different branch for tool updates on staging branches (Antoine du Hamel) #63110
- [`4a32ed82bd`] - tools: prevent lib code from reading KeyObject and CryptoKey accessors (Filip Skokan) #63111
Windows 64-bit Installer: https://nodejs.org/dist/v26.2.0/node-v26.2.0-x64.msi
Windows ARM 64-bit Installer: https://nodejs.org/dist/v26.2.0/node-v26.2.0-arm64.msi
Windows 64-bit Binary: https://nodejs.org/dist/v26.2.0/win-x64/node.exe
Windows ARM 64-bit Binary: https://nodejs.org/dist/v26.2.0/win-arm64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v26.2.0/node-v26.2.0.pkg
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v26.2.0/node-v26.2.0-darwin-arm64.tar.gz
macOS Intel 64-bit Binary: https://nodejs.org/dist/v26.2.0/node-v26.2.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v26.2.0/node-v26.2.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v26.2.0/node-v26.2.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v26.2.0/node-v26.2.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v26.2.0/node-v26.2.0-aix-ppc64.tar.gz
ARMv8 64-bit Binary: https://nodejs.org/dist/v26.2.0/node-v26.2.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v26.2.0/node-v26.2.0.tar.gz
Other release files: https://nodejs.org/dist/v26.2.0/
Documentation: https://nodejs.org/docs/v26.2.0/api/
[SHASUMS](https://nodejs.org/en/blog/release/v26.2.0#shasums)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
cef2e65897f97088b512f922896a56de3ec0614d020816ef0ecb76290e708b81 node-v26.2.0-aix-ppc64.tar.gz
922634a94fc0beb8a3feb448f55c600fb8eb6a0a598996a6536cb78e98cfc03c node-v26.2.0-arm64.msi
2d8575b6a749c0bc66cc6ecd22a952f7d9bbf3b0ea76fcb0ed3ce858018afff7 node-v26.2.0-darwin-arm64.tar.gz
6c2393ec9fd8a16264282bf30d6c09088695f5189915d8075d0166b23688f04a node-v26.2.0-darwin-arm64.tar.xz
26a5480d0dd952be86beae83e6636dacd7a3ffd17ef51d0b26bc9b260f2b42e9 node-v26.2.0-darwin-x64.tar.gz
50e3fb7cda816f0ab8929551516530669d1c0449a3f6a8a044be82a57cc642a4 node-v26.2.0-darwin-x64.tar.xz
05f779a0a5498712cd8f85cef69ef02072a45c12641ee616f2d9b89416a81a47 node-v26.2.0-headers.tar.gz
2b447554f72320568be9c06566d6a673ab97bffaf799a758a91cb5e81dc16e3c node-v26.2.0-headers.tar.xz
bf52461d25017479cdc549642c4e7a2303ac5c5395d7c3d026d5d8b3fa283c05 node-v26.2.0-linux-arm64.tar.gz
2f06be7e5435728abd890fe53b69965773919b705d8cfedd856c8f604c1e3726 node-v26.2.0-linux-arm64.tar.xz
4b52429b35a049a0cf574360cd1b11cbc9f03201d13876f26897c9863d25ec49 node-v26.2.0-linux-ppc64le.tar.gz
c4bff589e7a1cdf344e4f37f1ee69451eeb747284dd94fc3ae6fdd3813caa05f node-v26.2.0-linux-ppc64le.tar.xz
9d064914e38a5b3e6a3074647407198116f7bc724fce5a9600cece84ac7da671 node-v26.2.0-linux-s390x.tar.gz
bc4cacb7cbc8079a04f78d99d15b1a409147ef0d81fec9f67e5528121df058c8 node-v26.2.0-linux-s390x.tar.xz
8e5b4b969bb2414aca2ff84d2b99608511aedca32bf8a8427e6187dbdd703bbe node-v26.2.0-linux-x64.tar.gz
9f786864128a11375e398b8dfacd4a5e995ec4b6a6c8b3b52ac9afbc95ea8158 node-v26.2.0-linux-x64.tar.xz
90226d28eadd3d94e33f585c5835631bdd52c05027df2b0ed00fd4068dccc375 node-v26.2.0-win-arm64.7z
131efa8bd858f8ad000a1a0436d8bb1320c638291c779a921fb20e5702a1cc0a node-v26.2.0-win-arm64.zip
c617934f4d9fca2df0eb77f6bf924dc44d70fd787da578131d17a6001709f76c node-v26.2.0-win-x64.7z
371071a4f7e2c8a5dd280730049c685911feecc59f50ebc488d675dc1087c69c node-v26.2.0-win-x64.zip
51be3a87789ecc7987c3d515ec805bf304955fe5f96167ef3001e5a428b3bf3e node-v26.2.0-x64.msi
2d8c59df289ba651523d89df2e00ace61655ed468cef68c9a1c262250952c1fd node-v26.2.0.pkg
37032a75a677f063dbe22f0cc72249a3a2faff2ce71056b63771d6967bd63384 node-v26.2.0.tar.gz
ea82be7db418f54b3ef153a02d44d4f6748466f4765ae80bc484f34af40df610 node-v26.2.0.tar.xz
2b2c5c0db8922fbadf6e4d97d5f0a0666ebaa2af9dc513d1f80b2634e69c9d6b win-arm64/node.exe
376eb35054756d8493adc1f26495fba0b7bda7365cdb7c132130044a622d6c31 win-arm64/node.lib
9410ec0655634890df572c2d22807a40cf44faae0d20f7f9ca650b1f4ce19aa2 win-arm64/node_pdb.7z
058fbfa4a8fc95db58bb02eb9e91cbd92bb34c8dcc67628b8c6110f20d3a8a5f win-arm64/node_pdb.zip
96f768b95e8e9d443f5eead1cb2d199744923320bb8240d2c3129362e7ae2a5d win-x64/node.exe
9c236a87f9c50a26099d74f35883c28c6b279585ccc5849aa640ff23de7be9b8 win-x64/node.lib
42da34eb8cdf18eab84610a71fd86d05921ac8d7e7927895e6442d2238fd7c92 win-x64/node_pdb.7z
aaf9c384825145c6bb8fe8a1f9e644350d019b79cf879181011e4e0c78f23e40 win-x64/node_pdb.zip
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQRb6KP2yKXAHRBsCtggsaOQsWjTVgUCag2w1AAKCRAgsaOQsWjT
VmcSAP9blRmG8QqpI9xpuySF9de5BQL4YHKC7WxSkrBvR7GhrgEA6OLocb8H6vNd
vQVfJRgF10JESE7UDBYuL7WePTZWCg4=
=ByRS
-----END PGP SIGNATURE-----