Retour au blog

Node.js 24 LTS : pourquoi et comment passer à Krypton

17 mai 2026•Mis à jour le 5 septembre 2026•Dedimarco
nodejs javascript lts performance webdev
Node.js 24 LTS : pourquoi et comment passer à Krypton

En résumé : Au 5 septembre 2026, Node.js 24 Krypton est la LTS à choisir pour un nouveau projet. La branche est en LTS active depuis le 28 octobre 2025, passera en maintenance le 20 octobre 2026 et restera prise en charge jusqu’au 30 avril 2028 selon le calendrier officiel. Pour un projet Node.js 22, planifiez la migration après avoir testé dépendances, modules natifs et APIs dépréciées.

Node.js 24 modernise le moteur JavaScript, npm, le suivi du contexte asynchrone et plusieurs APIs natives. La migration reste généralement progressive, mais elle mérite une validation ciblée plutôt qu’une mise à jour automatique en production.

Que change vraiment Node.js 24 par rapport à Node.js 22 ?

La version initiale Node.js 24.0.0, publiée le 6 mai 2025, apporte notamment V8 13.6, npm 11, AsyncContextFrame par défaut et URLPattern global.

V8 13.6 : le cœur qui bat plus vite

Le moteur JavaScript passe à V8 13.6 dans Node.js 24. La note de version officielle liste parmi les nouveautés Float16Array, la gestion explicite des ressources, RegExp.escape, WebAssembly Memory64 et Error.isError.

// Float16Array — moitié moins de mémoire pour les gros tensors
const data = new Float16Array(1024 * 1024); // 2 Mo au lieu de 4 Mo

// RegExp.escape — plus besoin de bidouiller
const safe = RegExp.escape("hello.world?+*"); // "hello\\.world\\?\\+\\*"

// Error.isError — vérification fiable même entre realms
if (Error.isError(thing)) {
  // chose est bien une erreur, même venue d'un iframe ou vm
}

// Explicit Resource Management — enfin du RAII en JS
function processFile(path) {
  using file = await fs.open(path, 'r');
  // Le fichier sera automatiquement fermé, même en cas d'erreur
}

V8 13.6 apporte aussi des optimisations internes. Leur impact dépend toutefois de votre charge : mesurez le démarrage, les chemins chauds et la consommation mémoire de votre application avant d’annoncer un gain.

npm 11 : plus rapide, plus sûr

Node.js 24 embarque npm 11. Ses notes de version officielles confirment notamment que :

  • --ignore-scripts couvre tous les scripts de cycle de vie, y compris prepare
  • npm ne revient plus à l’ancien endpoint d’audit si la requête groupée échoue
  • npm 11 exige Node.js ^20.17.0 || >=22.9.0

Les temps d’installation dépendent du cache, du registre, du système de fichiers et de l’arbre de dépendances. Comparez npm ci sur votre propre CI avant de conclure.

AsyncContextFrame : le traçage sans douleur

L’API AsyncLocalStorage utilise désormais AsyncContextFrame par défaut, au lieu de l’ancien mécanisme basé sur async_hooks.

import { AsyncLocalStorage } from 'node:async_hooks';

const context = new AsyncLocalStorage();

// Plus besoin de --experimental-async-context-frame
// C'est activé par défaut, plus performant
context.run({ requestId: 'abc-123' }, async () => {
  await someAsyncWork();
  // Le contexte survit à travers TOUTES les opérations async
  console.log(context.getStore().requestId); // 'abc-123'
});

Cette implémentation vise un suivi de contexte plus efficace et plus robuste. Elle intéresse surtout le traçage distribué, les journaux corrélés et la propagation d’un identifiant de requête.

Permission Model : quelles limites de sécurité ?

Le modèle de permissions est stable et s’active avec --permission. Il contrôle notamment les accès aux fichiers, aux processus enfants, aux workers, aux addons natifs, à WASI et à l’inspecteur.

# Autoriser uniquement la lecture et l'écriture nécessaires
node --permission \
  --allow-fs-read=/app/data \
  --allow-fs-write=/app/logs \
  server.js

La documentation le présente comme une ceinture de sécurité pour du code de confiance, pas comme une isolation contre du code malveillant. Ne le considérez donc pas comme un remplacement d’un conteneur ou d’une sandbox.

URLPattern devient global

Fini les imports explicites :

// Node 24 — disponible partout
const pattern = new URLPattern({ pathname: '/blog/:slug' });
console.log(pattern.test('https://mon-site.com/blog/node-24')); // true

Cette API standard simplifie le routage et la validation de motifs d’URL sans import explicite.

Undici 7 : le moteur de fetch() évolue

Node.js 24 embarque Undici 7 et poursuit l’amélioration du client HTTP utilisé par fetch().

// Undici est utilisé sous le capot par fetch()
const res = await fetch('https://api.exemple.com/data');

Test runner : plus intuitif

Le test runner natif attend désormais automatiquement les sous-tests :

import { describe, it } from 'node:test';

describe('API Users', () => {
  // Avant Node 24 : il fallait await manuellement
  // Maintenant : auto-attente, comme Jest ou Vitest
  it('devrait créer un utilisateur', async () => {
    const res = await fetch('/api/users', { method: 'POST' });
    assert.strictEqual(res.status, 201);
  });
});

SQLite natif : que gagne Node.js 24 ?

Le module node:sqlite, introduit dans Node.js 22, continue de progresser dans Node.js 24. Au 5 septembre 2026, la documentation de la branche 24 le classe encore « release candidate » : évaluez sa stabilité et son API avant de remplacer une dépendance éprouvée.

import { DatabaseSync } from 'node:sqlite';

const db = new DatabaseSync(':memory:');
db.exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)');
db.prepare('INSERT INTO users (name) VALUES (?)').run('Dedimarco');
const users = db.prepare('SELECT * FROM users').all();
console.log(users); // [{ id: 1, name: 'Dedimarco' }]

Comment Node.js 22 et Node.js 24 se comparent-ils ?

Fonctionnalité Node.js 22 (Jod) Node.js 24 (Krypton)
npm au lancement de la branche 10.x 11.x
Float16Array Non Oui
RegExp.escape Non Oui
Error.isError Non Oui
URLPattern global Non Oui
AsyncContextFrame Disponible, non activé par défaut Par défaut
Permission Model Stable sur les versions récentes Stable (--permission)
node:sqlite Introduit dans la branche API enrichie, encore release candidate
Fin de support prévue 30 avril 2027 30 avril 2028

Quels points de friction faut-il vérifier ?

Addons natifs et plateformes de compilation

Un changement de version majeure peut imposer une recompilation des addons natifs. La note de version Node.js 24 précise aussi que compiler Node.js sous Windows nécessite désormais ClangCL, MSVC n’étant plus pris en charge pour cette tâche.

Architectures 32 bits

La note de version indique que le support ARMv7 devient expérimental et que certaines architectures 32 bits, dont s390 et ppc, ne sont plus prises en charge. Vérifiez les binaires réellement publiés pour votre plateforme avant la migration.

url.parse() : faut-il remplacer l’ancienne API ?

La note de version Node.js 24 ajoute une dépréciation à l’exécution de url.parse(). La documentation URL recommande l’API WHATWG :

// ❌ Déprécié dans Node.js 24
const parsed = url.parse('https://exemple.com/path?q=1');

// ✅ API WHATWG
const parsed = new URL('https://exemple.com/path?q=1');

Une recherche globale suivie d’une revue manuelle suffit dans la plupart des codebases. Vérifiez ensuite les propriétés utilisées, car l’objet WHATWG URL ne recopie pas toutes les propriétés de l’ancien format.

Comment installer Node.js 24 sans mauvaise surprise ?

Les dépôts de distributions ne proposent pas tous la même version au même moment. Commencez donc par la page de téléchargement officielle, puis choisissez la méthode adaptée à votre environnement plutôt que de supposer que le paquet système est à jour.

Sous Windows

Méthode 1 : l’installateur officiel

Téléchargez l’installateur LTS depuis la page de téléchargement officielle, puis exécutez le paquet adapté à votre architecture.

Méthode 2 : fnm (recommandé aux développeurs)

fnm (Fast Node Manager) est écrit en Rust, rapide, multiplateforme :

# Installation via winget
winget install Schniz.fnm

# Puis installer Node 24
fnm install 24
fnm use 24
fnm default 24

Méthode 3 : Volta ou nvm-windows

# Avec Volta
winget install Volta.Volta
volta install node@24

# Avec nvm-windows
nvm install 24
nvm use 24

Sous macOS

# fnm (ma recommandation)
brew install fnm
fnm install 24
fnm default 24

# Ou via nvm
nvm install 24
nvm alias default 24

# Ou via Homebrew directement
brew install node@24

Sous Linux

Méthode 1 : NodeSource

NodeSource fournit des dépôts APT et RPM pour la branche 24. Vérifiez toujours le script téléchargé avant de l’exécuter avec des droits administrateur.

Ubuntu / Debian :

# Télécharger et exécuter le script de setup NodeSource
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -

# Installer Node.js 24
sudo apt install -y nodejs

# Vérifier la version effectivement installée
node -v
npm -v

Fedora / RHEL / Rocky Linux :

# Configurer le dépôt NodeSource
curl -fsSL https://rpm.nodesource.com/setup_24.x | sudo -E bash -
sudo dnf install -y nodejs

Arch Linux :

# Vérifier la version disponible avant installation
pacman -Si nodejs
sudo pacman -S nodejs npm

Méthode 2 : NVM (recommandé pour le développement)

NVM installe Node dans votre répertoire utilisateur. Idéal quand vous gérez plusieurs projets avec des versions différentes.

# Installer NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash

# Recharger le shell ou rouvrir un terminal, puis :
nvm install 24
nvm alias default 24

# Pinner la version par projet
echo "24" > .nvmrc
nvm use

Attention : NVM installe Node dans le répertoire de votre utilisateur. Pour un service systemd ou un autre utilisateur, utilisez plutôt un paquet maîtrisé, un binaire officiel ou une image de conteneur.

Méthode 3 : fnm (mon favori perso)

Plus rapide que NVM, supporte .node-version et .nvmrc, et gère plusieurs versions sans ralentir l’ouverture du shell :

# Installer fnm
curl -fsSL https://fnm.vercel.app/install | bash

# Installer Node 24
fnm install 24
fnm default 24

# Les projets avec .node-version ou .nvmrc basculent automatiquement
fnm use

Méthode 4 : binaires officiels (tarball)

Pour les environnements sans accès direct aux dépôts, prenez l’archive de la dernière version 24 publiée. Au 5 septembre 2026, il s’agit de la 24.20.0 :

cd /usr/local
sudo curl -fsSL https://nodejs.org/dist/v24.20.0/node-v24.20.0-linux-x64.tar.xz | sudo tar -xJ --strip-components=1
node -v  # v24.20.0

Méthode 5 : Docker / Podman

Si vos applications s’exécutent dans des conteneurs, mettez simplement à jour l’image de base :

# Dockerfile
FROM node:24-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
CMD ["node", "server.js"]

Les images officielles proposent les tags node:24, node:24-alpine et node:24-slim, ainsi que les alias Krypton correspondants.

Que retient mon retour de migration ?

Entre janvier et mars 2026, j’ai migré mes projets personnels et deux projets clients de Node.js 22 vers Node.js 24.

Ce qui s’est bien passé :

  • Les applications Express, Astro et les scripts courants ont fonctionné sans changement notable
  • L’attente automatique des sous-tests rend le test runner plus agréable
  • Les installations avec npm 11 se sont déroulées sans incident sur mes environnements
  • node:sqlite couvrait les besoins simples de plusieurs projets

Ce qui a demandé de l’attention :

  • Un addon natif compilé avec node-gyp a nécessité une recompilation
  • Le remplacement de url.parse() par l’API WHATWG a demandé une passe de recherche et quelques ajustements de propriétés
  • Les tests complets ont pris plus de temps que prévu sur la CI la plus ancienne

Mon conseil : si vous êtes sur Node.js 22, ne visez pas la limite du 30 avril 2027. Mettez à jour les dépendances, relancez la suite de tests, recompilez les addons natifs et validez les usages de url.parse() avant de basculer.

Verdict

Node.js 24 LTS est une sortie solide. Le runtime gagne des APIs standard plus utiles, npm 11, un meilleur suivi du contexte asynchrone et un modèle de permissions stable. Le point de vigilance reste la validation ciblée des addons natifs, des plateformes de compilation et des APIs dépréciées.

Si vous démarrez un nouveau projet aujourd’hui, partez sur Node.js 24. Si vous maintenez un projet Node.js 22, planifiez la migration avant la fin de support du 30 avril 2027.

Sources

Questions fréquentes

Node.js 24 est-il une version LTS ?

Oui. Node.js 24, alias Krypton, est en LTS active depuis le 28 octobre 2025 et doit passer en maintenance le 20 octobre 2026, selon le calendrier officiel.

Jusqu'à quand Node.js 24 sera-t-il maintenu ?

Le calendrier officiel prévoit une fin de vie le 30 avril 2028. Les dates peuvent évoluer, donc vérifiez-les avant de planifier une migration à long terme.

Faut-il migrer de Node.js 22 vers Node.js 24 ?

Oui pour un nouveau projet et, en général, pour un projet Node.js 22 après validation des dépendances, des modules natifs et des APIs dépréciées. Node.js 22 reste toutefois maintenu jusqu'au 30 avril 2027.

Quelle est la meilleure méthode pour installer Node.js 24 ?

Utilisez fnm ou nvm sur un poste de développement afin de changer facilement de version. Sur un serveur, préférez un paquet maîtrisé, un binaire officiel vérifié ou l'image Docker officielle.