Poick

This is a cached version of https://nodejs.org/en/blog/release/v22.21.0 from 2/28/2026, 3:14:09 PM.

Node.js — Node.js 22.21.0 (LTS)

Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.

Skip to contentNode.js 22.21.0 (LTS)ADHAntoine du HamelNode.js 22.21.0 (LTS)2025-10-20, Version 22.21.0 'Jod' (LTS), @aduh95 Notable Changes [1486fedea1] - (SEMVER-MINOR) cli: add --use-env-proxy (Joyee Cheung) #59151 [bedaaa11fc] - (SEMVER-MINOR) http: support http proxy for fetch under NODE_USE_ENV_PROXY (Joyee Cheung) #57165 [af8b5fa29d] - (SEMVER-MINOR) http: add shouldUpgradeCallback to let servers control HTTP upgrades (Tim Perry) #59824 [42102594b1] - (SEMVER-MINOR) http,https: add built-in proxy support in http/https.request and Agent (Joyee Cheung) #58980 [686ac49b82] - (SEMVER-MINOR) src: add percentage support to --max-old-space-size (Asaf Federman) #59082 Commits [a71dd592e3] - benchmark: calibrate config dgram multi-buffer (Bruno Rodrigues) #59696 [16c4b466f4] - benchmark: calibrate config cluster/echo.js (Nam Yooseong) #59836 [53cb9f3b6c] - build: add the missing macro definitions for OpenHarmony (hqzing) #59804 [ec5290fe01] - build: do not include custom ESLint rules testing in tarball (Antoine du Hamel) #59809 [1486fedea1] - (SEMVER-MINOR) cli: add --use-env-proxy (Joyee Cheung) #59151 [1f93913446] - crypto: use return await when returning Promises from async functions (Renegade334) #59841 [f488b2ff73] - crypto: use async functions for non-stub Promise-returning functions (Renegade334) #59841 [aed9fd5ac4] - crypto: avoid calls to promise.catch() (Renegade334) #59841 [37c2d186f0] - deps: update amaro to 1.1.4 (pmarchini) #60044 [28aea13419] - deps: update archs files for openssl-3.5.4 (Node.js GitHub Bot) #60101 [ddbc1aa0bb] - deps: upgrade openssl sources to openssl-3.5.4 (Node.js GitHub Bot) #60101 [badbba2da9] - deps: update googletest to 50b8600 (Node.js GitHub Bot) #59955 [48aaf98a08] - deps: update archs files for openssl-3.5.3 (Node.js GitHub Bot) #59901 [e02a562ea6] - deps: upgrade openssl sources to openssl-3.5.3 (Node.js GitHub Bot) #59901 [7e0e86cb92] - deps: upgrade npm to 10.9.4 (npm team) #60074 [91dda5facf] - deps: update undici to 6.22.0 (Matteo Collina) #60112 [3a3220a2f0] - dgram: restore buffer optimization in fixBufferList (Yoo) #59934 [09bdcce6b8] - diagnostics_channel: fix race condition with diagnostics_channel and GC (Ugaitz Urien) #59910 [b3eeb3bd13] - doc: provide alternative to url.parse() using WHATWG URL (Steven) #59736 [1ddaab1904] - doc: mention reverse proxy and include simple example (Steven) #59736 [3b3b71e99c] - doc: mark .env files support as stable (Santeri Hiltunen) #59925 [d37f67d1bd] - doc: remove optional title prefixes (Aviv Keller) #60087 [ca2dff63f9] - doc: fix typo on child_process.md (Angelo Gazzola) #60114 [3fca564a05] - doc: add automated migration info to deprecations (Augustin Mauroy) #60022 [4bc366fc16] - doc: use "WebAssembly" instead of "Web Assembly" (Tobias Nießen) #59954 [4808dbdd9a] - doc: fix typo in section on microtask order (Tobias Nießen) #59932 [d6e303d645] - doc: update V8 fast API guidance (René) #58999 [0a3a3f729e] - doc: add security escalation policy (Ulises Gascón) #59806 [8fd669c70d] - doc: type improvement of file http.md (yusheng chen) #58189 [9833dc6060] - doc: rephrase dynamic import() description (Nam Yooseong) #59224 [2870a73681] - doc,crypto: update subtle.generateKey and subtle.importKey (Filip Skokan) #59851 [85818db93c] - fs,win: do not add a second trailing slash in readdir (Gerhard Stöbich) #59847 [bedaaa11fc] - (SEMVER-MINOR) http: support http proxy for fetch under NODE_USE_ENV_PROXY (Joyee Cheung) #57165 [af8b5fa29d] - (SEMVER-MINOR) http: add shouldUpgradeCallback to let servers control HTTP upgrades (Tim Perry) #59824 [758271ae66] - http: optimize checkIsHttpToken for short strings (방진혁) #59832 [42102594b1] - (SEMVER-MINOR) http,https: add built-in proxy support in http/https.request and Agent (Joyee Cheung) #58980 [a33ed9bf96] - inspector: ensure adequate memory allocation for Binary::toBase64 (René) #59870 [34c686be2b] - lib: update inspect output format for subclasses (Miguel Marcondes Filho) #59687 [12e553529c] - lib: add source map support for assert messages (Chengzhong Wu) #59751 [d2a70571f8] - lib,src: refactor assert to load error source from memory (Chengzhong Wu) #59751 [20a9e86b5d] - meta: move Michael to emeritus (Michael Dawson) #60070 [c591cca15c] - meta: bump github/codeql-action from 3.30.0 to 3.30.5 (dependabot[bot]) #60089 [090ba141b1] - meta: bump codecov/codecov-action from 5.5.0 to 5.5.1 (dependabot[bot]) #60091 [a0ba6884a5] - meta: bump actions/stale from 9.1.0 to 10.0.0 (dependabot[bot]) #60092 [0feca0c541] - meta: bump actions/setup-node from 4.4.0 to 5.0.0 (dependabot[bot]) #60093 [7cd2b42d18] - meta: bump step-security/harden-runner from 2.12.2 to 2.13.1 (dependabot[bot]) #60094 [1f3b9d66ac] - meta: bump actions/cache from 4.2.4 to 4.3.0 (dependabot[bot]) #60095 [0fedbb3de7] - meta: bump ossf/scorecard-action from 2.4.2 to 2.4.3 (dependabot[bot]) #60096 [04590b8267] - meta: bump actions/setup-python from 5.6.0 to 6.0.0 (dependabot[bot]) #60090 [2bf0a9318f] - meta: add .npmrc with ignore-scripts=true (Joyee Cheung) #59914 [e10dc7b81c] - module: allow overriding linked requests for a ModuleWrap (Chengzhong Wu) #59527 [2237142369] - module: link module with a module request record (Chengzhong Wu) #58886 [6d24b88fbc] - node-api: added SharedArrayBuffer api (Mert Can Altin) #59071 [4cc84c96f4] - node-api: make napi_delete_reference use node_api_basic_env (Jeetu Suthar) #59684 [e790eb6b50] - repl: fix cpu overhead pasting big strings to the REPL (Ruben Bridgewater) #59857 [99ea08dc43] - repl: add isValidParentheses check before wrap input (Xuguang Mei) #59607 [e4a4f63019] - sqlite: fix crash session extension callbacks with workers (Bart Louwers) #59848 [42c5544b97] - src: assert memory calc for max-old-space-size-percentage (Asaf Federman) #59460 [686ac49b82] - (SEMVER-MINOR) src: add percentage support to --max-old-space-size (Asaf Federman) #59082 [84701ff668] - src: clear all linked module caches once instantiated (Chengzhong Wu) #59117 [8e182e561f] - src: remove unnecessary Environment::GetCurrent() calls (Moonki Choi) #59814 [c9cde35c4d] - src: simplify is_callable by making it a concept (Tobias Nießen) #58169 [892b425ee1] - src: rename private fields to follow naming convention (Moonki Choi) #59923 [36b68db7f5] - src: reduce the nearest parent package JSON cache size (Michael Smith) #59888 [26b40bad02] - src: replace FIXED_ONE_BYTE_STRING with Environment-cached strings (Moonki Choi) #59891 [34dcb7dc32] - src: create strings in FIXED_ONE_BYTE_STRING as internalized (Anna Henningsen) #59826 [4d748add05] - src: remove std::array overload of FIXED_ONE_BYTE_STRING (Anna Henningsen) #59826 [bb6fd7c2d1] - src: ensure v8::Eternal is empty before setting it (Anna Henningsen) #59825 [7a91282bf9] - src: use simdjson::pad (0hm☘️) #59391 [ba00875f01] - stream: use new AsyncResource instead of bind (Matteo Collina) #59867 [ebec3ef68b] - (SEMVER-MINOR) test: move http proxy tests to test/client-proxy (Joyee Cheung) #58980 [7067d79fb3] - test: mark sea tests flaky on macOS x64 (Richard Lau) #60068 [ca1942c9d5] - test: testcase demonstrating issue 59541 (Eric Rannaud) #59801 [660d57355e] - test,doc: skip --max-old-space-size-percentage on 32-bit platforms (Asaf Federman) #60144 [19a7b1ef26] - tls: load bundled and extra certificates off-thread (Joyee Cheung) #59856 [095e7a81fc] - tls: only do off-thread certificate loading on loading tls (Joyee Cheung) #59856 [c42c1204c7] - tools: fix tools/make-v8.sh for clang (Richard Lau) #59893 [b632a1d98d] - tools: skip test-internet workflow for draft PRs (Michaël Zasso) #59817 [6021c3ac76] - tools: copyedit build-tarball.yml (Antoine du Hamel) #59808 [ef005d0c9b] - typings: update 'types' binding (René) #59692 [28ef564ecd] - typings: remove unused imports (Nam Yooseong) #59880 [f88752ddb6] - url: replaced slice with at (Mikhail) #59181 [24c224960c] - url: add type checking to urlToHttpOptions() (simon-id) #59753 [f2fbcc576d] - util: fix debuglog.enabled not being present with callback logger (Ruben Bridgewater) #59858 [6277058e43] - vm: sync-ify SourceTextModule linkage (Chengzhong Wu) #59000 [5bf21a4309] - vm: explain how to share promises between contexts w/ afterEvaluate (Eric Rannaud) #59801 [312b33a083] - vm: "afterEvaluate", evaluate() return a promise from the outer context (Eric Rannaud) #59801 [1eadab863c] - win,tools: add description to signature (Martin Costello) #59877 [816e1befb1] - zlib: reduce code duplication (jhofstee) #57810 Windows 32-bit Installer: https://nodejs.org/dist/v22.21.0/node-v22.21.0-x86.msi Windows 64-bit Installer: https://nodejs.org/dist/v22.21.0/node-v22.21.0-x64.msi Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.21.0/node-v22.21.0-arm64.msi Windows 32-bit Binary: https://nodejs.org/dist/v22.21.0/win-x86/node.exe Windows 64-bit Binary: https://nodejs.org/dist/v22.21.0/win-x64/node.exe Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.21.0/win-arm64/node.exe macOS 64-bit Installer: https://nodejs.org/dist/v22.21.0/node-v22.21.0.pkg macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.21.0/node-v22.21.0-darwin-arm64.tar.gz macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.21.0/node-v22.21.0-darwin-x64.tar.gz Linux 64-bit Binary: https://nodejs.org/dist/v22.21.0/node-v22.21.0-linux-x64.tar.xz Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.21.0/node-v22.21.0-linux-ppc64le.tar.xz Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.21.0/node-v22.21.0-linux-s390x.tar.xz AIX 64-bit Binary: https://nodejs.org/dist/v22.21.0/node-v22.21.0-aix-ppc64.tar.gz ARMv7 32-bit Binary: https://nodejs.org/dist/v22.21.0/node-v22.21.0-linux-armv7l.tar.xz ARMv8 64-bit Binary: https://nodejs.org/dist/v22.21.0/node-v22.21.0-linux-arm64.tar.xz Source Code: https://nodejs.org/dist/v22.21.0/node-v22.21.0.tar.gz Other release files: https://nodejs.org/dist/v22.21.0/ Documentation: https://nodejs.org/docs/v22.21.0/api/ SHASUMS -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 8846bd37a71df4c581724c6435566de4b10d7f52ce9e3d848a7892a59c7d3a45 node-v22.21.0-aix-ppc64.tar.gz 9c6fa46ea627ba51561c4912494e496b0423629633bba57cfc42634ebaa42f9f node-v22.21.0-arm64.msi dbc1a17024a32827adb23b5b11ce98cefcd783145a30fe41bb2845be711e9742 node-v22.21.0-darwin-arm64.tar.gz 54b884588727c9833cad6e4b902f922128b8da136ba845e76e878b0d2d08c8f4 node-v22.21.0-darwin-arm64.tar.xz 756674542a28207515cdd22ca290e53a9c1fb7b903603047278d339164eb376f node-v22.21.0-darwin-x64.tar.gz 8c61b1ab7b3a398717b3503fbd205d239079cac22402ee9327f4d3a240622d86 node-v22.21.0-darwin-x64.tar.xz c89657f56c6cd89ae54e043dfe4a229f201267fd7f2547750dc76041acf5b578 node-v22.21.0-headers.tar.gz bc20d7d09bc6ba807757b2a1c76523473ac88c1922523616b7fbf1ca154c60fa node-v22.21.0-headers.tar.xz 5180e74f2cdea6142548bd827249da32c0e86ba2581d6241e2f2761f957b9ed1 node-v22.21.0-linux-arm64.tar.gz fe3e371f6f72d07a3f75a94a54c97d652ace6bfcc48f82cc0867f0c0722b84bd node-v22.21.0-linux-arm64.tar.xz 9bab62621d1d5f704d6e365be7804233d03851698aaaf554fe726aa02f59d8e4 node-v22.21.0-linux-armv7l.tar.gz 800d87999f4b7592ea3a780e6b5ec1f3ab41566b1031f15bbbbc03fef4f402f0 node-v22.21.0-linux-armv7l.tar.xz b20b26276ad8f95c739db7e391e17be578905ecb4ea12274624ed513d2317d7e node-v22.21.0-linux-ppc64le.tar.gz 7faab4f786f79c886555d86520502db68df0c1a0fae47a8cf9237e4bac505a4e node-v22.21.0-linux-ppc64le.tar.xz 5291d90caec80f796b50666fc9a81b01c2db04e491555a9243091af0080a9c52 node-v22.21.0-linux-s390x.tar.gz 18110873863cc2f56eacb20f8da59adc3b53f5a7070f7d97501bd3d00003d236 node-v22.21.0-linux-s390x.tar.xz 262b84b02f7e2bc017d4bdb81fec85ca0d6190a5cd0781d2d6e84317c08871f8 node-v22.21.0-linux-x64.tar.gz 71a04f4b9144870c9407b8019fe912514229e50246bc706862eded3ac8e9025d node-v22.21.0-linux-x64.tar.xz 3fce2daac6b36f6343d79ef72590b46ada5b22df3538e45e46c521c531f3f205 node-v22.21.0-win-arm64.7z 6b44ae79925840ac80d91c3115f9f78ad24ea34f85807db85bcdb7d37f28e07b node-v22.21.0-win-arm64.zip 31a82a950fd2524651f0409307afe3276ae68a13a131e8b72945a3931109c8c3 node-v22.21.0-win-x64.7z 84d31df6571c3c7156707265bf51e2a021656fa1584bf6f4486b792dcde54d7d node-v22.21.0-win-x64.zip d2767e24741f915477002d6325dda40f7554ce9e5176c8d2e824dc127d273725 node-v22.21.0-win-x86.7z eba103ab3fa3d1ad5158bf9ad38f81d2e7cc5d6d78e06b68f017cf696016025e node-v22.21.0-win-x86.zip 78da2f62c917bdc931fb3518f3f10c0c1e74b5305d0a85a8d308e081c2af3038 node-v22.21.0-x64.msi 183ed7bddfda69c71d9381f33f368da983ddab6ee357f2324774d0a429c311df node-v22.21.0-x86.msi bfc3d8bf34b47f79044ca0227b0c2b130ed6633a677d18d806ff71e1824d1f78 node-v22.21.0.pkg 3ada9d465cd6557b7b0ccea5f785278931a2a319bc941f68b2e742c6883f18ad node-v22.21.0.tar.gz 791b18e969ea22cc952108ee8eaafbb12cddfd973bbbb0b7fc116395c0d9a81c node-v22.21.0.tar.xz 17f35e7c7ed8626c6b9def40f57f8ae74ff6ff2e5788ca4bb0577d3e07d71bcc win-arm64/node.exe 9265150c60463c2c524b7475f8a1f70943dcc05a735f3110ee50446ed4fff965 win-arm64/node.lib 1295f96e2762c7ca4544b8dba9d768176656c67a0763a012e6d6251fb79f036b win-arm64/node_pdb.7z d50f2ddba93b9b874dc9ce2de519850b5e12a754deb31b903dcf139337c68822 win-arm64/node_pdb.zip 47cd67453da180a39cdf5daedb89862667b8e627e60c116607874633450cd30d win-x64/node.exe aa0ec2c0281c18a5a4753b2d7f4fec0e2ba0b004be1f61b3bb9feb15e544a968 win-x64/node.lib ef6674c5480935e0471cac80d3897eceba38c71c1e42323b4a189078b7fd780f win-x64/node_pdb.7z 14b8d6cbfe1b29a2cfabf459d6f07a5cdc6855abde875ee67f64fa777eea72d8 win-x64/node_pdb.zip 9a6cf3570b09b744bf675d0ea984ecb0ca3f92931d40f17ee423e142df4d3c5e win-x86/node.exe 2428b7ac2df89e23fcc5d5d0d1b4c2baf4ff515575fe7fa5d7dd0575673fcd64 win-x86/node.lib 6aa8de167074d2352a4ee93924122f3d6be512ff0a398c26456fec15c30e0c29 win-x86/node_pdb.7z 9f5d0ac4c678ecc4236479875a9ee84abedafea16878ffbdd4fd7bb62329bc8a win-x86/node_pdb.zip -----BEGIN PGP SIGNATURE----- iHUEARYIAB0WIQRb6KP2yKXAHRBsCtggsaOQsWjTVgUCaPbKwQAKCRAgsaOQsWjT VhjhAQDdE2iAOd/4UtnGF6Iwr//TT8O1Zv4auzvTGZMZUSKAHgD+PaU6k1BDxVZG kRtCBKy6BpYYW7+sC/6H8vLx6YQq4Qw= =mFMf -----END PGP SIGNATURE----- PreviousNode.js 24.11.0 (LTS)NextNode.js 25.0.0 (Current)