Aller au contenu
Makersquad

Node.js 26 est sorti

par Makersquad ·

Logo de Node.js sur fond dégradé

Date de sortie : 5 mai 2026

Documentation officielle : Node.js 26.0.0 Release

Node.js 26 est sorti le 5 mai 2026. C’est la version Current jusqu’au 28 octobre 2026, date de son passage en support long terme (LTS), assuré jusqu’au 30 avril 2029. Temporal est activé par défaut, V8 passe en 14.6 et Undici en 8.

Les nouveautés principales

Temporal activé par défaut

L’API Temporal est disponible sans option. C’est l’API moderne de dates et d’heures de JavaScript, plus robuste et plus complète que l’objet Date historique.

const today = Temporal.Now.plainDateISO();
console.log(today.add({ days: 30 }).toString());

V8 14.6

Le moteur passe en 14.6.202.33, issu de Chromium 146. Il apporte deux propositions TC39.

Upsert sur les Map

getOrInsert() et getOrInsertComputed(), sur Map et WeakMap (proposition Upsert), renvoient la valeur d’une clé et l’insèrent d’abord si elle manque. Plus besoin de lire, tester puis écrire.

const counts = new Map();
for (const word of ["node", "v26", "node"]) {
  counts.set(word, counts.getOrInsert(word, 0) + 1);
}
// Map(2) { 'node' => 2, 'v26' => 1 }

const cache = new Map();
cache.getOrInsertComputed("startedAt", () => Date.now());

Chaînage d’itérateurs

Iterator.concat() (proposition Iterator sequencing) enchaîne plusieurs itérables en un seul itérateur.

const all = Iterator.concat([1, 2], new Set([3, 4]));
console.log([...all]); // [1, 2, 3, 4]

Undici 8

fetch() et le client HTTP de Node.js reposent sur Undici, qui passe en 8.0.2. Ses notes de version détaillent les changements.

Messages d’assertion au format printf

Les méthodes de node:assert acceptent un message au format printf : les arguments qui suivent sont substitués comme avec util.format().

import assert from "node:assert/strict";

const apples = 1;
const oranges = 2;
assert.strictEqual(apples, oranges, "apples %s !== oranges %s", apples, oranges);
// AssertionError [ERR_ASSERTION]: apples 1 !== oranges 2

Changements incompatibles

Retraits

  • ServerResponse.prototype.writeHeader() est supprimée (DEP0063). Utilisez writeHead().
  • Les modules hérités _stream_wrap, _stream_readable, _stream_writable, _stream_duplex, _stream_transform et _stream_passthrough sont supprimés (DEP0125, DEP0193). Utilisez node:stream.
  • En mode GCM, une étiquette d’authentification plus courte que la longueur par défaut (16 octets pour AES-GCM) exige désormais l’option authTagLength de crypto.createDecipheriv() (DEP0182).
  • L’option --experimental-transform-types est supprimée.

Dépréciations à l’exécution

  • Passer un CryptoKey aux fonctions de node:crypto (DEP0203), ou un CryptoKey non extractible à KeyObject.from() (DEP0204). Les deux lèveront une erreur dans une future version.
  • L’option type de Duplex.toWeb(), remplacée par readableType (DEP0201).
  • module.register(), remplacée par module.registerHooks() (DEP0205).

Comportements modifiés

  • Sans --localstorage-file, localStorage renvoie undefined.
  • readable.read() sans argument renvoie les tampons un par un au lieu de les concaténer. Un comportement proche, sans être identique, s’obtient avec readable.read(readable.readableLength).
  • QuotaExceededError devient une classe globale dérivée de DOMException, et crypto.getRandomValues() lance désormais cette erreur. Un code qui teste la classe de l’erreur est concerné.
  • Le corps d’une requête HTTP Upgrade est analysé comme celui de toute requête, au lieu d’être mêlé au flux qui suit l’upgrade.
  • L’export PKCS#8 des clés privées ML-KEM et ML-DSA qui contiennent une graine se fait par défaut au format graine seule.
  • NODE_MODULE_VERSION passe à 147 : les modules natifs doivent être recompilés.

Plateformes

  • Compiler Node.js depuis les sources demande GCC 13.2 (ou Clang 19.1) et Python 3.10 ou plus récent. Ces exigences ne concernent que la compilation.
  • Power 9 devient le minimum sur AIX, IBM i et Linux ppc64le, et z14 sur Linux s390x (fin de Power 8 et z13).

À retenir

Node.js 26 active Temporal par défaut et embarque V8 14.6 et Undici 8. Avant de migrer, relisez les retraits et les changements de comportement, notamment localStorage, readable.read() et NODE_MODULE_VERSION 147, qui impose de recompiler les modules natifs.

Échanger avec un expert TypeScript

De l’idée au marché. Makersquad conçoit des logiciels sur mesure, pensés pour durer, avec de petites équipes d’experts autonomes. Depuis 2018.