Skip to content

Node.js 25.5.0 (Current)

Antoine du Hamel

2026-01-26, Version 25.5.0 (Current), @aduh95

Notable Changes

  • [99a4e51f93] - crypto: update root certificates to NSS 3.119 (Node.js GitHub Bot) #61419
  • [fbe4da5725] - (SEMVER-MINOR) deps: add LIEF as a dependency (Joyee Cheung) #61167
  • [0feab0f083] - (SEMVER-MINOR) deps: add tools and scripts to pull LIEF as a dependency (Joyee Cheung) #61167
  • [e91b296001] - (SEMVER-MINOR) fs: add ignore option to fs.watch (Matteo Collina) #61433
  • [b351910af1] - (SEMVER-MINOR) sea: add --build-sea to generate SEA directly with Node.js binary (Joyee Cheung) #61167
  • [957292e233] - (SEMVER-MINOR) sea: split sea binary manipulation code (Joyee Cheung) #61167
  • [f289817ff8] - (SEMVER-MINOR) sqlite: enable defensive mode by default (Bart Louwers) #61266
  • [069f3603e2] - (SEMVER-MINOR) sqlite: add sqlite prepare options args (Guilherme Araújo) #61311
  • [5a984b9a09] - src: use node- prefix on thread names (Stewart X Addison) #61307
  • [75c06bc2a8] - (SEMVER-MINOR) test: migrate to --build-sea in existing SEA tests (Joyee Cheung) #61167
  • [cabd58f1cb] - (SEMVER-MINOR) test: use fixture directories for sea tests (Joyee Cheung) #61167
  • [ff1fcabfc9] - (SEMVER-MINOR) test_runner: support expecting a test-case to fail (Jacob Smith) #60669

Commits

  • [778a56f3c9] - assert,util: fix deep comparison for sets and maps with mixed types (Ruben Bridgewater) #61388
  • [32cd18e37f] - async_hooks: enabledHooksExist shall return if hooks are enabled (Gerhard Stöbich) #61054
  • [482b2568bc] - benchmark: add SQLite benchmarks (Guilherme Araújo) #61401
  • [e9a34263bb] - buffer: make methods work on Uint8Array instances (Neal Beeken) #56578
  • [8255cdefcf] - build: add --shared-nbytes configure flag (Antoine du Hamel) #61341
  • [8dd379d110] - build: update android-patches/trap-handler.h.patch (Mo Luo) #60369
  • [1b4b5eb0e4] - build: update devcontainer.json to use paired nix env (Joyee Cheung) #61414
  • [86e2a763ad] - build: infer cargo mode with gyp var build_type directly (Chengzhong Wu) #61354
  • [7e211e6942] - build: add embedtest into native suite (Joyee Cheung) #61357
  • [637470e79f] - build: fix misplaced comma in ldflags (hqzing) #61294
  • [a1a0f77a45] - build: fix crate vendor file checksums on windows (Chengzhong Wu) #61329
  • [d597b8e342] - build,tools: fix addon build deadlock on errors (Vladimir Morozov) #61321
  • [b5cdc27ba4] - build,win: improve logs when ClangCL is missing (Mike McCready) #61438
  • [ef01f0c033] - build,win: update WinGet configurations to Python 3.14 (Mike McCready) #61431
  • [d8a1cdeefe] - child_process: treat ipc length header as unsigned uint32 (Ryuhei Shima) #61344
  • [588b00fafa] - cluster: fix port reuse between cluster (Ryuhei Shima) #60141
  • [99a4e51f93] - crypto: update root certificates to NSS 3.119 (Node.js GitHub Bot) #61419
  • [048f7a5c9c] - deps: upgrade npm to 11.8.0 (npm team) #61466
  • [fbe4da5725] - (SEMVER-MINOR) deps: add LIEF as a dependency (Joyee Cheung) #61167
  • [0feab0f083] - (SEMVER-MINOR) deps: add tools and scripts to pull LIEF as a dependency (Joyee Cheung) #61167
  • [4bb00d7e3c] - deps: update googletest to 85087857ad10bd407cd6ed2f52f7ea9752db621f (Node.js GitHub Bot) #61417
  • [6a3c614f27] - deps: update sqlite to 3.51.2 (Node.js GitHub Bot) #61339
  • [13c0397d6d] - deps: update icu to 78.2 (Node.js GitHub Bot) #60523
  • [098ec6f196] - deps: update ada to v3.4.0 (Yagiz Nizipli) #61315
  • [320b576125] - deps: update zlib to 1.3.1-e00f703 (Node.js GitHub Bot) #61135
  • [98f5e7cf51] - deps: V8: cherry-pick highway@dcc0ca1cd42 (Richard Lau) #61008
  • [e326df79c9] - deps: V8: backport 209d2db9e24a (Zhijin Zeng) #61322
  • [ccfd9d9b30] - doc: remove v prefix for version references (Mike McCready) #61488
  • [b6cc5d77a1] - doc: mention constructor comparison in assert.deepStrictEqual (Hamza Kargin) #60253
  • [236d7ee635] - doc: add CVE delay mention (Rafael Gonzaga) #61465
  • [0729fb6ee7] - doc: update previous version links in BUILDING (Mike McCready) #61457
  • [0fb464252f] - doc: include OpenJSF handle for security stewards (Rafael Gonzaga) #61454
  • [3331bdca7c] - doc: clarify process.argv[1] behavior for -e/--eval (Jeevankumar S) #61366
  • [94b34c38e2] - doc: remove Windows Dev Home instructions from BUILDING (Mike McCready) #61434
  • [a17016ee81] - doc: clarify TypedArray properties on Buffer (Roman Reiss) #61355
  • [214fac9d7e] - doc: update Python 3.14 manual install instructions (Windows) (Mike McCready) #61428
  • [6a32a685a6] - doc: note resume build should not be done on node-test-commit (Stewart X Addison) #61373
  • [2a8e8dfaf3] - doc: refine WebAssembly error documentation (sangwook) #61382
  • [f3caf27f8b] - doc: add deprecation history for url.parse (Eng Zer Jun) #61389
  • [5ab8057856] - doc: add marco and rafael in last sec release (Marco Ippolito) #61383
  • [f83cb1e785] - doc: packages: example of private import switch to internal (coderaiser) #61343
  • [3d23bcd0e2] - doc: add esm and cjs examples to node:v8 (Alfredo González) #61328
  • [1d159550e0] - doc: added 'secure' event to tls.TLSSocket (ikeyan) #61066
  • [90080d2892] - doc: restore @watilde to collaborators (Daijiro Wachi) #61350
  • [a87f7a50f8] - doc: run license-builder (github-actions[bot]) #61348
  • [adf5c84701] - doc: clean up writing-and-running-benchmarks.md (Hardanish Singh) #61345
  • [2be98add0c] - doc: document ALPNCallback option for TLSSocket constructor (ikeyan) #61331
  • [2db4893c8d] - esm: ensure watch mode restarts after syntax errors (Xavier Stouder) #61232
  • [828feb2e6b] - events: remove redundant todo (Gürgün Dayıoğlu) #60595
  • [e91b296001] - (SEMVER-MINOR) fs: add ignore option to fs.watch (Matteo Collina) #61433
  • [606184fae5] - fs: remove duplicate getValidatedPath calls (Mert Can Altin) #61359
  • [434fcd7f8f] - fs: fix errorOnExist behavior for directory copy in fs.cp (Nicholas Paun) #60946
  • [bacba16f5e] - fs: fix ENOTDIR in globSync when file is treated as dir (sangwook) #61259
  • [7697ce0310] - fs: remove duplicate fd validation in sync functions (Mert Can Altin) #61361
  • [8abd54f597] - gyp: aix: change gcc version detection so CXX="ccache g++" works (Stewart X Addison) #61464
  • [24033ee7ea] - http: fix rawHeaders exceeding maxHeadersCount limit (Max Harari) #61285
  • [cf56327939] - http2: validate initialWindowSize per HTTP/2 spec (Matteo Collina) #61402
  • [696935eeeb] - inspector: initial support storage inspection (Ryuhei Shima) #61139
  • [3d5e718e38] - lib: fix typo in util.js comment (Taejin Kim) #61365
  • [f55a5fea00] - lib: fix TypeScript support check in jitless mode (sangwook) #61382
  • [b3fbc3c375] - meta: do not fast-track npm updates (Antoine du Hamel) #61475
  • [2423ecdaef] - meta: fix typos in issue template config (Daijiro Wachi) #61399
  • [e2df85a33a] - meta: label v8 module PRs (René) #61325
  • [bc9e5f7d4d] - node-api: fix node_api_create_object_with_properties name (Vladimir Morozov) #61319
  • [4f30c21c59] - node-api: use Node-API in comments (Vladimir Morozov) #61320
  • [62d71eb28d] - quic: copy options.certs buffer instead of detaching (Chengzhong Wu) #61403
  • [4bbbe75ba1] - quic: move quic behind compile time flag (Matteo Collina) #61444
  • [b351910af1] - (SEMVER-MINOR) sea: add --build-sea to generate SEA directly with Node.js binary (Joyee Cheung) #61167
  • [957292e233] - (SEMVER-MINOR) sea: split sea binary manipulation code (Joyee Cheung) #61167
  • [f289817ff8] - (SEMVER-MINOR) sqlite: enable defensive mode by default (Bart Louwers) #61266
  • [6442229880] - sqlite: add some tests (Guilherme Araújo) #61410
  • [069f3603e2] - (SEMVER-MINOR) sqlite: add sqlite prepare options args (Guilherme Araújo) #61311
  • [df02d00d61] - src: improve StringBytes::Encode perf on UTF8 (Сковорода Никита Андреевич) #61131
  • [e35814ba80] - src: add missing override specifier to Clean() (Tobias Nießen) #61429
  • [803ff7d3de] - src: cache context lookup in vectored io loops (Mert Can Altin) #61387
  • [58abe99cbf] - src: cache missing package.json files in the C++ package config cache (Michael Smith) #60425
  • [2a542094e4] - src: use starts_with instead of rfind/find (Tobias Nießen) #61426
  • [77cacf6d9d] - src: use C++ nullptr in sqlite (Tobias Nießen) #61416
  • [344cc629d4] - src: use C++ nullptr in webstorage (Tobias Nießen) #61407
  • [9f25cad26c] - src: fix pointer alignment (jhofstee) #61336
  • [5a984b9a09] - src: use node- prefix on thread names (Stewart X Addison) #61307
  • [d4cf423a65] - stream: export namespace object from internal end-of-stream module (René) #61455
  • [7d8232e34c] - test: add some validation for JSON doc output (Antoine du Hamel) #61413
  • [75c06bc2a8] - (SEMVER-MINOR) test: migrate to --build-sea in existing SEA tests (Joyee Cheung) #61167
  • [cabd58f1cb] - (SEMVER-MINOR) test: use fixture directories for sea tests (Joyee Cheung) #61167
  • [bcffca8911] - test: aix: mark test_threadsafe_function/test flaky on AIX (Stewart X Addison) #61452
  • [29399501c1] - test: add implicit test for fs dispose handling with using (Ilyas Shabi) #61140
  • [3bb481571a] - test: reveal wpt evaluation errors in status files (Chengzhong Wu) #61358
  • [a132be7f71] - test: check new WebCryptoAPI enum values (Filip Skokan) #61406
  • [72f1463735] - test: split test-esm-loader-hooks (Joyee Cheung) #61374
  • [39105e4c5f] - test: aix: mark test-emit-on-destroyed as flaky (Stewart X Addison) #61381
  • [3f17acfb1c] - test: add webidl web-platform tests (Yagiz Nizipli) #61316
  • [89983cf747] - test: update url web-platform tests (Yagiz Nizipli) #61315
  • [73c0a242d7] - test: forbid use of named imports for fixtures (Antoine du Hamel) #61228
  • [a49d54308e] - test: enforce better never-settling-promise detection (Antoine du Hamel) #60976
  • [335cb0b5cc] - test: ensure assertions are reached on all tests (Antoine du Hamel) #60845
  • [5ee02c789a] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60763
  • [141fb82ffb] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60760
  • [edf90ce457] - test: use RegExp.escape to improve test reliability (Antoine du Hamel) #60803
  • [f5f9b2dcf6] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60728
  • [ec1cbbe0b6] - test_runner: fix memory leaks in runner (Abhishek Kv. Savani) #60860
  • [399ac68427] - test_runner: fix coverage report when a directory is named file (Heath Dutton🕴️) #61169
  • [6e1beda333] - test_runner: print info when test restarts (Xavier Stouder) #61160
  • [f5803ccb86] - test_runner: fix rerun ambiguous test failures (Moshe Atlow) #61392
  • [a5a4c3eb44] - test_runner: nix dead reporter code (Vas Sudanagunta) #59700
  • [ff1fcabfc9] - (SEMVER-MINOR) test_runner: support expecting a test-case to fail (Jacob Smith) #60669
  • [ade4fc2338] - tools: copyedit Nix files (Antoine du Hamel) #61447
  • [7c2242beb9] - tools: validate release commit diff as part of lint-release-proposal (Antoine du Hamel) #61440
  • [ca4ebed258] - tools: use ad-hoc flag to lint Nix files (Antoine du Hamel) #61405
  • [05ce2c87f3] - tools: fix vcbuild lint-js-build (Vladimir Morozov) #61318
  • [41adb54a37] - tools: enforce trailing commas in test/es-module (Antoine du Hamel) #60891
  • [eebd732a52] - tools: enforce trailing commas in test/sequential (Antoine du Hamel) #60892
  • [8b73739e03] - typings: add typing for string_decoder (Taejin Kim) #61368
  • [e88dd012ad] - v8: changing total_allocated_bytes to avoid ABI changes (Caio Lima) #60800
  • [c75ad3d87d] - v8: add GCProfiler support for erm (Ilyas Shabi) #61191
  • [611c179663] - zlib: validate write_result array length (Ryuhei Shima) #61342

Windows 64-bit Installer: https://nodejs.org/dist/v25.5.0/node-v25.5.0-x64.msi
Windows ARM 64-bit Installer: https://nodejs.org/dist/v25.5.0/node-v25.5.0-arm64.msi
Windows 64-bit Binary: https://nodejs.org/dist/v25.5.0/win-x64/node.exe
Windows ARM 64-bit Binary: https://nodejs.org/dist/v25.5.0/win-arm64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v25.5.0/node-v25.5.0.pkg
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v25.5.0/node-v25.5.0-darwin-arm64.tar.gz
macOS Intel 64-bit Binary: https://nodejs.org/dist/v25.5.0/node-v25.5.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v25.5.0/node-v25.5.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v25.5.0/node-v25.5.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v25.5.0/node-v25.5.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v25.5.0/node-v25.5.0-aix-ppc64.tar.gz
ARMv8 64-bit Binary: https://nodejs.org/dist/v25.5.0/node-v25.5.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v25.5.0/node-v25.5.0.tar.gz
Other release files: https://nodejs.org/dist/v25.5.0/
Documentation: https://nodejs.org/docs/v25.5.0/api/

SHASUMS

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

a355ab5635db4f170bddaa7c2c384b22afc4da7072add6f6ad1fb6f355e17e2b  node-v25.5.0-aix-ppc64.tar.gz
864c58b9a092a35653a5e5f4d5961a54c1428e9dc9d4b7ac826ca229bbc6996a  node-v25.5.0-arm64.msi
568ff9aae73e82499346be25250c7caacab2ca4bbb697bc73056cf3b983b8211  node-v25.5.0-darwin-arm64.tar.gz
11097658094eeceed26b96ebcb6acac349795e9a4b74cb59d2820c5ac8374cd6  node-v25.5.0-darwin-arm64.tar.xz
c36d2db9afc900b2cfa45b60a9423b4991ad86976acd3fe5b500abda91f21243  node-v25.5.0-darwin-x64.tar.gz
c61a93d569f31d2e40eedd988a06362a7d247112f51310756db99ec6722645bc  node-v25.5.0-darwin-x64.tar.xz
c86f5090635bedb03b8f8832ebcbcc00cb07f2fd83f3528a826d3bd57c7624af  node-v25.5.0-headers.tar.gz
70dd8582d7905cf5f2e72158cce0b57cecd3253e208ff7542889a44c1db71bd4  node-v25.5.0-headers.tar.xz
20f9aa9f2174786754f1941a178a62b906216fcdcd923400817f4bfa72e12336  node-v25.5.0-linux-arm64.tar.gz
2e5264c7e08c1693fce40a6fb604569272438f4bafe93066fa0f00a5ee7bacd6  node-v25.5.0-linux-arm64.tar.xz
c5ca7fee6f0a969e16c6152650ddf4553274d53dc6f81ebee25cfee8c70999cf  node-v25.5.0-linux-ppc64le.tar.gz
1db6f6292e6b6f0b25fcb6ff6fbe4d52d4d6d6b4b2131980ecc715854ddb1749  node-v25.5.0-linux-ppc64le.tar.xz
2092f336a60191a44e4b99e87a5278fffa4e4a9dc786b7b657756c2c75460af5  node-v25.5.0-linux-s390x.tar.gz
65736df156468dc40ad3798de2a0f95bd4f227c012d5527ae678b0d9ced84581  node-v25.5.0-linux-s390x.tar.xz
e8e50aee2e5328bcbc2ead32d86d0b577220ccdd80c438583dca3aa2965873f2  node-v25.5.0-linux-x64.tar.gz
8223dca08b48b927acafaae7595dc670c86f7aa1855a20019bd43f8ea890851c  node-v25.5.0-linux-x64.tar.xz
06e6ef9670b91f485f733be66dcf173dde50181a644cc2841cbaa732ce8a3adc  node-v25.5.0-win-arm64.7z
7ca3d9bb4bf745e4bcd7b6ae6840c37fbd12da909ee5df6b932af42cdd997a19  node-v25.5.0-win-arm64.zip
3b8fb60f80b0cc5bf2abd74dd2b7f853e88f39d2dbca269818742ad7ca0713d2  node-v25.5.0-win-x64.7z
4d2773e98d3f35d172478d5101de1f571d851053d2ed67bbe39a5bdeae87d804  node-v25.5.0-win-x64.zip
af80a24744ff17c98818699da9680f805bb332708ff535967e39940b4bf1195d  node-v25.5.0-x64.msi
fba3d55e76190fa381355489e3b63715cd5449a3aeac4d57274e8f3efd07005d  node-v25.5.0.pkg
334569dc43eb427af5ca97e330ab8752cbac19a2a70d476a97aa194f79010b07  node-v25.5.0.tar.gz
7e35efaf63c8fe7737b8c62792ec547e5a95a69f1f813fcfba28566aecc9fd92  node-v25.5.0.tar.xz
7f75694e0a071b6f5ffa570fd62c7050b265376252a1db272dcdef81d0fc78e7  win-arm64/node.exe
5ffc9eea8fd5d23619dd28489ec2dc08b994d4f0eacda475ecff0921e80c1b01  win-arm64/node.lib
813fe4fcaba63a89f56152289d3fc4a26d76767064c478a23a47fd74c65670ec  win-arm64/node_pdb.7z
7931397d581cf60581ee52dd56d9b5d3920dd8c54580914e68b3975968860ef5  win-arm64/node_pdb.zip
d7f55cbc1b1ca9cc2815d7b8c58f94e4822a68cdf5ca55b4f2c9625581b92839  win-x64/node.exe
19f7d769cb12fc0eb7eaf2a5d3db2d1f70b80d1172aa302dfbdb7d719e0dab46  win-x64/node.lib
fe8e38ba5d145b75b793c8076778fb83e1112fde39bbd7514dd92cbe296f2bb5  win-x64/node_pdb.7z
05a1d0a1126783e0e9ab334805002a1f26a421b987618d500558a23bd14df4ff  win-x64/node_pdb.zip

-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQRb6KP2yKXAHRBsCtggsaOQsWjTVgUCaXfQigAKCRAgsaOQsWjT
VqfOAQCHFSxCgUYXnScTqtnXVzjBcOjnMO4OLbrIN/aKLA/inAD9Em8opoDHOwRz
UjgG3zEoZnpV+uBm7C7jqZsD9dcWNA0=
=rrpu
-----END PGP SIGNATURE-----