Node.js 25.5.0 (Current)
Antoine du Hamel
2026-01-26, Version 25.5.0 (Current), @aduh95
Notable Changes
Streamlined building process of Single Executable Applications (SEA)
This release introduces a new --build-sea command-line flag that simplifies the process of building Single Executable Applications (SEA) using Node.js.
Previously, SEA generation involved copying the executable, generating the preparation blob with --experimental-sea-config, and injecting the blob into the copy using nodejs/postject. With the new --build-sea flag, these steps are now consolidated into a single step available from Node.js core.
$ echo 'console.log("Hello")' > hello.js
$ echo '{ "main": "hello.js", "output": "sea" }' > sea-config.json
$ node --build-sea sea-config.json
$ ./sea
Hello
For the time being, backward compatibility with the postject-based SEA building process as well as the --experimental-sea-config will be maintained, until there's motivation to break it (e.g. for optimizations).
See the documentation for more details.
Contributed by Joyee Cheung in #61167.
Other 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-seato 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-seain 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-nbytesconfigure 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: removevprefix 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 inutil.jscomment (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: useRegExp.escapeto 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 oflint-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 intest/es-module(Antoine du Hamel) #60891 - [
eebd732a52] - tools: enforce trailing commas intest/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-----