Consigne

Mettre à jour une application Angular avec ng update sans la casser

Une mise à jour Angular sûre se fait une version majeure à la fois, avec ng update, sur une branche propre et des tests au vert, après avoir aligné Node.js et TypeScript sur ce que demande la version cible. Depuis Angular 22, une majeure sort tous les 12 mois et chacune est en principe soutenue 24 mois. Angular 20 ne reçoit plus de correctifs après le 28 novembre 2026.

Publié le 27 octobre 2026 · 5 min · par Antoine Despres, Consigne

Le rythme des versions et la durée de support

Angular annonce désormais une version majeure tous les 12 mois, avec quatre à six mineures par majeure. Jusqu'à Angular 22, le cycle était de six mois. Chaque majeure est en principe soutenue 24 mois : 12 mois de support actif, puis 12 mois de support à long terme (LTS), limité aux correctifs critiques et de sécurité.

Les versions encore soutenues au 27 octobre 2026, selon angular.dev :

VersionSortieFin du support actifFin du LTS
Angular 223 juin 2026juin 2027juin 2028
Angular 2119 novembre 20253 juin 2026juin 2027
Angular 2028 mai 202519 novembre 202528 novembre 2026

Les versions 2 à 19 ne sont plus soutenues. Angular 23 est annoncé vers juin 2027. Les versions sorties sous l'ancien cycle avaient un support plus court : Angular 20 aura été soutenu 18 mois.

La règle : une majeure à la fois

angular.dev pose deux conditions pour ng update : la version visée doit être soutenue, et la version de départ doit être à une majeure au plus de la version visée. Pour passer de 19 à 21, on passe donc par 20.

Ce n'est pas une formalité : ng update exécute des migrations automatiques (schematics) qui réécrivent votre code pour la version suivante. Elles ne s'enchaînent que d'une majeure à la suivante, d'où la règle. Si vous changez les numéros de version dans package.json puis lancez npm install, aucune migration ne tourne.

Avant de lancer ng update

  1. Un arbre Git propre. ng update refuse par défaut de travailler sur un dépôt qui a des fichiers modifiés ou non suivis (l'option --allow-dirty lève ce garde-fou ; évitez-la). Créez une branche dédiée.
  2. Des vérifications au vert : lint, tests unitaires, build de production, tests de bout en bout s'il y en a. Sans cela, vous ne saurez pas si une erreur vient de la mise à jour.
  3. Node.js et TypeScript à la version demandée par la cible, d'après le tableau de compatibilité d'angular.dev :
AngularNode.jsTypeScript
20.2 et 20.3^20.19.0, ^22.12.0 ou ^24.0.05.8 à 5.9
21^20.19.0, ^22.12.0 ou ^24.0.05.9
22^22.22.3, ^24.15.0 ou ^26.0.06.0

Angular 22 abandonne Node.js 20 : pensez à l'image de vos agents d'intégration continue, à vos conteneurs de build et aux postes des développeurs.

  1. Le guide officiel pour votre saut de version : l'Update Guide d'angular.dev génère la liste des changements à faire selon la version de départ, la version d'arrivée et la complexité de l'application.

Les étapes, pour un saut d'une majeure

Exemple pour passer d'Angular 20 à 21 :

git switch -c maj/angular-21
npx ng update @angular/core@21 @angular/cli@21 --create-commits

--create-commits produit un commit par mise à jour et par migration : la relecture est plus facile, et vous pouvez annuler une migration précise.

Ensuite, dans l'ordre :

  1. Les paquets qui suivent Angular : ng update @angular/material@21 si vous utilisez Material et le CDK, puis l'outillage, par exemple ng update angular-eslint.
  2. Les bibliothèques tierces : chacune doit avoir une version compatible avec la nouvelle majeure (voir plus bas).
  3. Les vérifications : types, lint, tests, build, tests de bout en bout. Corrigez dans cet ordre : une erreur de typage provoque souvent des échecs en cascade plus loin.
  4. Les dépendances : relisez npm audit et la section overrides de package.json. Une surcharge ajoutée pour une ancienne faille peut être devenue inutile, voire bloquante.
  5. La fusion, puis le saut suivant si vous visez plus loin. Ne cumulez pas deux majeures dans une même demande de fusion.

Les mises à jour mineures et correctives se font à tout moment, entre deux majeures, avec les mêmes vérifications.

Les pièges les plus fréquents

Les bibliothèques tierces qui bloquent

C'est la cause la plus courante d'un ng update qui échoue sur des dépendances de pair : une bibliothèque de composants exige le CDK de la même majeure, une bibliothèque d'état exige la même version d'Angular. Avant de commencer, vérifiez pour chaque bibliothèque qu'une version compatible avec la cible existe. Si c'est le cas, passez-les dans la même commande que le framework pour que les dépendances de pair se résolvent ensemble :

npx ng update @angular/core@21 @angular/cli@21 @ngrx/store

Si une bibliothèque n'a pas encore de version compatible, attendez-la ou remplacez-la : forcer ne fait que déplacer l'erreur à l'exécution.

L'option --force

--force ignore les incompatibilités de dépendances de pair. Elle fait passer la commande, pas l'application : une bibliothèque compilée pour la majeure précédente peut casser à la compilation ou, pire, à l'exécution. Réservez-la au cas où vous savez pourquoi le conflit est sans effet.

Les migrations qui n'ont pas tourné

Si quelqu'un a déjà monté les paquets à la main, les migrations peuvent être relancées seules :

npx ng update @angular/core --migrate-only --from=20 --to=21

--from et --to ne fonctionnent qu'avec --migrate-only et pour un seul paquet.

Node.js, npm et l'intégration continue

Une mise à jour qui passe en local et échoue en CI vient presque toujours d'une version de Node.js différente. Fixez la version (fichier .nvmrc, champ engines, image de CI) dans la même branche que la mise à jour. Côté npm, l'outil ngm documente une erreur Cannot read properties of null (reading 'edgesOut') pendant la montée vers Angular 21, due à npm 10 ; passer à npm 11 la résout.

Les dépréciations accumulées

Une API dépréciée reste disponible au moins pendant la majeure suivante, soit au moins 12 mois, et n'est retirée qu'à une version majeure. Traitez les avertissements de dépréciation à chaque saut : ce sont les erreurs de compilation du saut suivant.

Organiser la maintenance dans le temps

Avec une majeure par an et 24 mois de support, une application tenue à jour une fois par an reste toujours sur une version soutenue. Le risque vient du retard : plus il y a de majeures à rattraper, plus les bibliothèques tierces divergent et plus chaque saut coûte. Inscrivez la montée de version au calendrier dès la sortie d'une majeure, et faites les mineures au fil de l'eau.

Se faire aider

Deux produits du studio couvrent ce sujet. Maintenance Angular est un abonnement : un développeur Angular établit chaque mois un diagnostic (support, failles, dépendances), livre les mises à jour seulement si votre lint, vos tests et votre build passent, et fait les montées de majeure selon le palier, dans votre dépôt et à distance. Il ne couvre ni le back-end, ni le déploiement en production, ni les migrations depuis AngularJS. Socle est un starter Angular 22 pour un nouveau projet, livré avec ses contrôles qualité en une commande et un guide de mise à jour ; il ne met pas à jour une application existante.

Sources

Autres guides