L'essentiel en une minute
Node.js 26 est devenu une version LTS (support à long terme) le 28 octobre 2026, avec la version 26.13.0 et le nom de code « Lithium ». Sorti le 5 mai 2026, il sera maintenu jusqu'au 30 avril 2029. C'est aussi la dernière ligne publiée selon l'ancien rythme pair et impair : à partir de Node.js 27, chaque version majeure deviendra LTS.
Cet article fait le point pour un développeur qui tourne sur Node.js 22 ou 24. Il repose sur les sources officielles de Node.js, de Docker et des gestionnaires de versions, consultées le 9 novembre 2026. Nous n'avons pas installé Node.js 26 pour cet article : les exemples de code viennent de la documentation et n'ont pas été exécutés.
Points clés
- Node.js 26 est en LTS active depuis le 28 octobre 2026 (version 26.13.0), passera en maintenance le 20 octobre 2027 et arrivera en fin de vie le 30 avril 2029.
- Le moteur V8 passe en 14.6, l'API Temporal est activée par défaut, et npm 11.20.0 est livré avec la version 26.13.0.
- Corepack n'est plus distribué avec Node.js depuis la version 25 : un
corepack enabledans un Dockerfile ou un pipeline de CI échouera s'il n'est pas installé à part.- Plusieurs API sont retirées, dont
response.writeHeader()et les modules_stream_*, et les modules natifs doivent être recompilés.- Une publication de sécurité est annoncée pour le 11 novembre 2026 sur les lignes 26, 24 et 22 : prévoyez de mettre à jour dès sa sortie.
Node.js 26 LTS : les dates et les versions
Le calendrier officiel fixe trois dates pour Node.js 26 : LTS active le 28 octobre 2026, maintenance le 20 octobre 2027, fin de vie le 30 avril 2029 (calendrier du groupe Release, consulté le 9 novembre 2026). Les notes de la version 26.13.0 le confirment : elle ne change rien par rapport à 26.12.1, à part les métadonnées qui marquent la ligne comme LTS (notes de version 26.13.0, 28 octobre 2026).
Les lignes 22 et 24 restent supportées, mais en maintenance seulement : correctifs critiques et sécurité. Node.js 24 « Krypton » y est passé le 20 octobre 2026.
| Ligne | Statut au 9 novembre 2026 | Dernière version | V8 | npm livré | Fin de vie |
|---|---|---|---|---|---|
| Node.js 22 « Jod » | LTS en maintenance | 22.23.4 (20 octobre) | 12.4 | 10.9.9 | 30 avril 2027 |
| Node.js 24 « Krypton » | LTS en maintenance | 24.22.2 (27 octobre) | 13.6 | 11.19.1 | 30 avril 2028 |
| Node.js 26 « Lithium » | LTS active | 26.13.0 (28 octobre) | 14.6 | 11.20.0 | 30 avril 2029 |
| Node.js 27 | Alpha | 27.0.0-alpha.0.0.0 (numéro officiel) | Non relevé | Non relevé | 30 avril 2030 (prévu) |
Les versions, les numéros de V8 et de npm viennent de l'index officiel des versions et les dates de fin de vie du calendrier du groupe Release, relevés le 9 novembre 2026.
Selon l'annonce du projet Node.js du 10 mars 2026, il n'y aura plus qu'une version majeure par an, en avril, promue LTS en octobre. Une phase Alpha de six mois remplace les versions impaires : celle de Node.js 27 s'est ouverte le 28 octobre 2026, et sa première version, numérotée officiellement 27.0.0-alpha.0.0.0, est datée du 29 octobre par l'index. Ces nouvelles lignes auront 30 mois de LTS active, sans phase de maintenance.
Ce qui change depuis Node.js 24
La plupart des ruptures entre Node.js 24 et 26 datent de Node.js 25. Les points ci-dessous viennent des journaux de modifications de Node.js 25 et de Node.js 26, et de la documentation.
V8 14.6 et Temporal activé par défaut
Node.js 26 embarque V8 14.6, la version de Chromium 146, et active par défaut l'API Temporal, qui remplace avantageusement l'objet Date pour les dates, les fuseaux et les durées (notes de version 26.0.0, 5 mai 2026). V8 14.6 apporte aussi Map.prototype.getOrInsert(), getOrInsertComputed() et Iterator.concat().
Un exemple écrit d'après la documentation de Temporal sur MDN, non exécuté :
const aujourdHui = Temporal.Now.plainDateISO(); const echeance = aujourdHui.add({ months: 3 }); console.log(echeance.toString()); Si vous découvrez ces notions, notre guide pour apprendre JavaScript reprend les bases du langage avant ces nouvelles API.
Corepack n'est plus livré
C'est la réponse à la recherche « node 26 corepack » : Corepack n'est plus distribué avec Node.js depuis la version 25.0.0. Le journal de Node.js 25.0.0 contient le commit « build: stop distributing Corepack », confirmé par la documentation de distribution.
Pour continuer à l'utiliser, le dépôt de Corepack indique de l'installer avec npm, puis de l'activer (commandes non exécutées) :
npm install -g corepack corepack enable TypeScript : le retrait des types est stable
Node.js exécute directement les fichiers .ts qui n'utilisent que de la syntaxe effaçable : les types sont remplacés par des espaces, sans vérification. Cette fonction est stable depuis Node.js 25.2.0 et 24.12.0, d'après la documentation TypeScript de Node.js. En revanche, l'option --experimental-transform-types, qui transformait la syntaxe non effaçable, est supprimée dans Node.js 26. Restent donc refusés les enum, les namespace qui contiennent du code exécutable, les propriétés de paramètres et les alias d'import ; un namespace qui ne contient que des types reste accepté.
Node.js ignore tsconfig.json et ne vérifie aucun type : tsc reste nécessaire en CI. Notre guide pour apprendre TypeScript détaille l'option erasableSyntaxOnly, qui fait refuser par le compilateur la syntaxe que Node.js ne sait pas effacer.
require(esm) n'est plus expérimental
Charger un module ECMAScript avec require() n'est plus expérimental depuis Node.js 25.4.0, selon la documentation des modules. Pour un projet CommonJS qui dépend d'une bibliothèque publiée uniquement en ESM, c'est la fin d'un contournement fréquent. Les modules qui utilisent await au niveau supérieur restent exclus.
Le modèle de permissions s'étoffe
Le modèle de permissions, activé avec --permission, est stable depuis Node.js 23.5.0 et 22.13.0. Depuis, il a gagné --allow-net (Node.js 25.0.0, encore en développement actif), un mode d'audit --permission-audit (25.8.0) qui journalise les violations sans bloquer, et process.permission.drop() (26.3.0 et 24.20.0) pour renoncer à un droit en cours d'exécution (documentation des permissions).
Ce n'est pas une protection contre du code malveillant, prévient la documentation. Depuis Node.js 24.2.0 et 22.17.0, le point d'entrée, ici index.js, est autorisé en lecture sans option (documentation de --allow-fs-read) ; les autres fichiers lus doivent être déclarés, un chemin par option, car la virgule n'est plus acceptée comme séparateur.
node --permission --allow-fs-read=./config --allow-net index.js Test runner, fetch, WebSocket et SQLite
Le test runner intégré, stable, gagne --test-randomize (26.1.0) pour mélanger l'ordre des tests, context.log() (26.6.0) et --test-coverage-include-all (26.7.0). La couverture de code reste marquée expérimentale dans la documentation du test runner.
- fetch est stable depuis Node.js 21 et repose sur Undici, passé en version 8 avec Node.js 26.
- WebSocket est un global stable depuis Node.js 22.4.0.
- node:sqlite est en « release candidate » depuis 25.7.0 (documentation SQLite). Dans 26.11.0,
DatabaseSyncest renomméeDatabase; l'ancien nom reste un alias déprécié.
Ce qui reste expérimental
Ces ajouts sont marqués expérimentaux dans la documentation : à éviter en production.
-
node:ffi, pour appeler des bibliothèques natives (26.1.0), une API que la documentation dit dangereuse. -
node:vfs, un système de fichiers virtuel (26.4.0). - Les Web Workers, derrière
--experimental-web-worker(26.9.0). -
URLPattern, global depuis Node.js 24.0.0 mais toujours expérimental.
Les API retirées et les ruptures à vérifier
Les retraits sont peu nombreux mais concrets : un appel à une API supprimée lève une erreur au lieu d'un simple avertissement. Pour writeHeader(), l'entrée du journal de Node.js 26.0.0 parle de http.Server.prototype, mais la dépréciation DEP0063 précise qu'il s'agit de la méthode de ServerResponse, la réponse HTTP. Le tableau reprend les principaux, d'après les notes de Node.js 25.0.0, de Node.js 26.0.0 et la liste des dépréciations.
| Changement | Version | Remplacement indiqué |
|---|---|---|
response.writeHeader() (ServerResponse) supprimée, DEP0063 | 26.0.0 | response.writeHead() |
Modules _stream_wrap, _stream_readable et quatre autres supprimés | 26.0.0 | node:stream |
Option --experimental-transform-types supprimée | 26.0.0 | Un outil tiers comme tsx |
module.register() dépréciée à l'exécution (DEP0205) | 26.0.0 | module.registerHooks() |
Balises GCM courtes sans authTagLength (DEP0182) en fin de vie | 26.0.0 | Préciser authTagLength |
Passer un CryptoKey aux API node:crypto (DEP0203) déprécié | 26.0.0 | Voir la liste des dépréciations |
SlowBuffer supprimée | 25.0.0 | Buffer.allocUnsafeSlow() |
fs.F_OK, fs.R_OK, fs.W_OK, fs.X_OK supprimées | 25.0.0 | fs.constants |
| Corepack retiré de la distribution | 25.0.0 | npm install -g corepack |
Trois ruptures ne se voient pas dans le code. D'abord, les modules natifs doivent être recompilés : NODE_MODULE_VERSION passe à 147 dans Node.js 26.0.0. Ensuite, depuis Node.js 25, les binaires officiels pour Linux sont liés à libatomic, que certaines distributions demandent d'installer à part, préviennent les notes de la version 26.13.0.
Enfin, la compilation depuis les sources exige désormais GCC 13.2 au minimum.
Sécurité : 26.12.1 et la publication du 11 novembre
La dernière version de sécurité de la ligne 26 est 26.12.1, publiée le 21 octobre 2026. Le même bulletin renvoie vers 24.22.1 et 22.23.4 pour les deux autres lignes, que l'index officiel date du 20 octobre. Ce bulletin corrige notamment quatre failles de gravité élevée, dont une écriture hors limites dans le décodeur Brotli (CVE-2026-111497) (bulletin d'octobre de Node.js, 21 octobre 2026). Comme 26.13.0 reprend 26.12.1 à l'identique, la version LTS inclut ces correctifs.
Une nouvelle publication est annoncée pour le mercredi 11 novembre 2026 sur les lignes 26, 24 et 22, avec une gravité maximale « élevée » sur chacune (annonce de Node.js, 3 novembre 2026). Le 9 novembre, elle n'était pas encore publiée : les numéros de version ne sont donc pas connus.
Nous ne détaillons pas ces failles ici. Notre veille des failles de sécurité de novembre 2026 reprendra ces failles une par une après leur publication, avec les versions à installer.
Images Docker : node:26, slim et alpine
Les étiquettes latest, current, slim et alpine de l'image officielle node suivent la ligne stable la plus récente : elles pointent vers Node.js 26 depuis la mise à jour du 6 mai 2026 qui a ajouté 26.0.0. Le passage en LTS a déplacé les étiquettes lts, lts-slim et lts-alpine, qui désignaient Node.js 24 : elles pointent vers la ligne 26 depuis la mise à jour du 28 octobre 2026, d'après le fichier des images officielles. Un Dockerfile sur node:lts a donc changé de version majeure sans modification de votre part.
| Étiquette | Base | Architectures | Pour quel usage |
|---|---|---|---|
node:26 ou node:26-trixie | Debian 13 « trixie » complète | amd64, arm64v8, ppc64le, s390x | Étape de compilation, outils inclus |
node:26-slim | Debian 13 « trixie » allégée | amd64, arm64v8, ppc64le, s390x | Image d'exécution par défaut |
node:26-bookworm-slim | Debian 12 « bookworm » allégée | amd64, arm64v8, ppc64le | Rester sur Debian 12 |
node:26-alpine | Alpine 3.24 | amd64, arm64v8 | Taille minimale, musl au lieu de glibc |
node:26.13.0-slim | Version figée | Comme 26-slim | Builds reproductibles |
La page de l'image node sur Docker Hub rappelle qu'Alpine utilise la bibliothèque C musl, source d'incompatibilités avec certains modules natifs. Node.js 26.11.0 a toutefois promu Alpine Linux au niveau 2 de support. Les variantes slim, elles, ne contiennent que le strict nécessaire pour exécuter Node.js.
Selon l'API publique de Docker Hub, le 9 novembre 2026, node:26 pèse 444,9 Mo compressés pour amd64, node:26-slim 85,7 Mo et node:26-alpine 62,9 Mo, contre 81,0 Mo pour node:24-slim. Décompressées, les images sont plus lourdes.
Un Dockerfile en deux étapes, construit d'après la documentation de l'image et non exécuté. L'étape de compilation part de l'image complète, qui contient les outils nécessaires aux modules natifs ; l'image finale, en variante slim, reprend les dépendances déjà installées (après npm prune --omit=dev) au lieu de les réinstaller :
# Remplacez 26.13.0 par la version de sécurité du 11 novembre dès sa sortie FROM node:26.13.0 AS build WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build RUN npm prune --omit=dev FROM node:26.13.0-slim WORKDIR /app ENV NODE_ENV=production COPY --from=build /app/package*.json ./ COPY --from=build /app/node_modules ./node_modules COPY --from=build /app/dist ./dist USER node CMD ["node", "dist/index.js"] Si les étapes multiples ou les couches sont nouvelles pour vous, commencez par notre tutoriel Docker pour débutants.
Migrer depuis Node.js 22 ou 24 : la checklist
La migration vers Node.js 26 se prépare en six étapes. Les commandes viennent des documentations de chaque outil et n'ont pas été exécutées pour cet article.
1. Installez Node.js 26 en local. Avec nvm, nvm install 26, ou nvm install --reinstall-packages-from=current 'lts/*' pour récupérer vos paquets globaux. Avec fnm, fnm install 26 puis fnm use 26. Avec mise, mise use node@26, qui écrit la version dans mise.toml.
Si vous utilisez Volta, volta install node@26 reste possible, mais son dépôt officiel indique que l'outil n'est plus maintenu et recommande de migrer vers mise.
2. Fixez la version dans le projet. Un fichier .nvmrc contenant 26 est lu par nvm à chaque nvm use ou nvm install (documentation de nvm) ; nvm ne lit pas .node-version. fnm lit les deux fichiers, tout comme l'option node-version-file de actions/setup-node, et mise les lit une fois l'option idiomatic_version_file_enable_tools activée (documentation de mise). Dans package.json, le champ engines déclare les versions acceptées :
{ "engines": { "node": ">=22" } } Sans l'option engine-strict, npm ne fait qu'avertir quand la version ne correspond pas, d'après la documentation de package.json. Relevez la borne à >=24 ou >=26 le jour où vous retirez une ligne de la matrice.
3. Élargissez la matrice de CI. Avec l'action actions/setup-node, testez sur les lignes encore supportées avant de couper l'ancienne :
strategy: matrix: node-version: [22, 24, 26] steps: - uses: actions/setup-node@v7 with: node-version: ${{ matrix.node-version }} Notre tutoriel GitHub Actions monte justement une matrice Node.js 24 et 26 pour une API.
4. Cherchez les API retirées. Lancez vos tests avec node --throw-deprecation pour transformer chaque avertissement en erreur, puis cherchez writeHeader, _stream_, SlowBuffer, fs.F_OK, module.register et --experimental-transform-types dans le code et les scripts.
5. Remplacez corepack enable. Dans les Dockerfile et les pipelines, ajoutez npm install -g corepack avant, ou installez directement votre gestionnaire de paquets.
6. Recompilez et mettez à jour les images. Relancez npm ci, qui supprime node_modules avant d'installer et recompile ainsi les modules natifs, figez l'image Docker sur 26.13.0-slim ou sur la version de sécurité du 11 novembre, et vérifiez la présence de libatomic sur vos serveurs Linux hors conteneur.
Pour une API Express, notre guide pour créer une API REST avec Node.js et Express vise déjà Node.js 24 ou plus. Côté front, notre article sur Next.js indique la version minimale de Node.js exigée par Next.js 16.
Faut-il passer à Node.js 26 maintenant ?
Pour un nouveau projet, oui : Node.js 26 est la seule ligne en LTS active, celle qui reçoit les nouveautés validées par l'équipe de publication jusqu'au 20 octobre 2027. Son support court jusqu'au 30 avril 2029, un an de plus que Node.js 24 selon le calendrier officiel.
Pour un projet en production sur Node.js 24, rien ne presse : la ligne 24 reste supportée jusqu'au 30 avril 2028 et reçoit les mêmes correctifs de sécurité. Planifiez la migration après un passage complet de vos tests en CI.
Pour un projet sur Node.js 22, la date à retenir est le 30 avril 2027, fin de vie de la ligne. Il reste moins de six mois. Passer directement à Node.js 26 évite une seconde migration en 2028, à condition de traiter en une fois les ruptures de quatre versions majeures, de 23 à 26.
Dans tous les cas, attendez la publication du 11 novembre 2026 pour figer une version dans vos images, plutôt que de déployer 26.13.0 deux jours avant un correctif de sécurité annoncé.
Ce que nous n'avons pas pu vérifier
Cet article est une synthèse documentaire, sans test sur machine. Les points suivants sont absents ou incertains :
- Les performances. Nous n'avons mené aucun banc d'essai et n'avons pas trouvé de mesure indépendante comparant Node.js 24 et 26.
- Le contenu de la publication du 11 novembre. Ni les failles ni les numéros de version n'étaient publiés le 9 novembre 2026.
- Le comportement exact de
localStorage, activé par défaut depuis Node.js 25, sans--localstorage-file. Le journal de Node.js 26.0.0 et la documentation de la version 26.13.0 décrivent deux comportements différents. Testez-le si vous en dépendez. - Le rétroportage vers Node.js 24. Certaines nouveautés citées existent aussi dans des versions 24.x récentes, comme
process.permission.drop(). Nous n'avons pas vérifié chaque fonction une par une.
Questions fréquentes
Quand Node.js 26 est-il passé en LTS ?
Le 28 octobre 2026, avec la version 26.13.0 et le nom de code « Lithium », selon les notes de version officielles. La ligne passera en maintenance le 20 octobre 2027 et sera en fin de vie le 30 avril 2029.
Corepack est-il encore inclus dans Node.js 26 ?
Non. Corepack n'est plus distribué avec Node.js depuis la version 25.0.0, d'après le dépôt de Corepack. Installez-le avec npm install -g corepack, puis lancez corepack enable, ou installez pnpm et Yarn par un autre moyen.
Quelle image Docker choisir pour Node.js 26 ?
node:26-slim est le bon choix par défaut pour exécuter une application : 85,7 Mo compressés pour amd64 sur Docker Hub le 9 novembre 2026, contre 444,9 Mo pour l'image complète. node:26-alpine est plus légère, mais utilise musl, ce qui peut gêner des modules natifs. En production, figez une version précise.
Node.js 26 exécute-t-il TypeScript sans compilation ?
En partie. Node.js exécute les fichiers .ts qui n'utilisent que de la syntaxe effaçable, sans vérifier les types, une fonction stable selon la documentation TypeScript de Node.js. Les enum, les namespace contenant du code exécutable et les propriétés de paramètres sont refusés, car l'option --experimental-transform-types a été supprimée dans Node.js 26.
À propos de l'auteur
Abdelilah Ourti est ingénieur IA et architecte logiciel. Il conçoit et déploie des applications web et des systèmes d'IA, et publie sur NeurauTech des guides et des comparatifs destinés aux développeurs francophones. Ses autres articles sont réunis sur sa page auteur. Pour vous entraîner sur les bases du langage, voyez aussi nos exercices JavaScript corrigés.
Méthode. Analyse fondée exclusivement sur des sources publiques consultées le 9 novembre 2026 : notes de version, journaux, documentation et bulletins de sécurité de Node.js, calendrier du groupe Release, images officielles Docker, documentations de nvm, fnm, mise, Volta, Corepack et npm. Node.js 26 n'a pas été installé et aucun code n'a été exécuté. Aucun lien n'est affilié et aucune relation commerciale ne lie l'auteur aux projets mentionnés.
Une erreur ou une version périmée ? Écrivez à contact@neurautech.com : l'article sera corrigé et la date de mise à jour modifiée.
Dernière mise à jour : 9 novembre 2026.
Image : İsmail Enes Ayhan (Unsplash License).

