Carlos Cifuentes
Angular versions · v20

Angular 20: end of life and how to upgrade

Angular 20 is in long-term support until November 28, 2026. After that date it stops receiving security fixes, so the move to v21 or v22 should be planned now.

By Carlos Cifuentes · Frontend architect · Updated 2026-10-02

Release and support dates

Angular 20 was released in May 2025. Active support ended in November 2025, when Angular 21 was released. Long-term support ends on November 28, 2026, according to the official release page. The dates for every major are in Angular version support and end of life.

As of October 2, 2026, Angular 20 has less than two months of support left. Angular 21 is in LTS until June 2027. Angular 22, the current major, has LTS until June 2028.

What Angular 20 introduced

  • More stable signal APIs. effect, linkedSignal and toSignal became stable.
  • Zoneless change detection in developer preview. The Angular changelog records its promotion to stable in v20.2.
  • Stable incremental hydration and route-level render mode.
  • Template improvements: untagged template literals, the exponentiation and in operators, and opt-in type checking for host bindings.
  • Style guide updates. In new projects the CLI no longer generates suffixes such as .component by default.
  • Deprecation of *ngIf, *ngFor and *ngSwitch in favour of the built-in control flow.

What needs attention when you upgrade

From 20 to 21:

  • TypeScript 5.9 or later is required.
  • New apps are zoneless by default. For existing zone-based apps, a migration adds provideZoneChangeDetection() to the root providers.
  • Type checking of host bindings is on by default. Fix the new errors or set typeCheckHostBindings: false.
  • The interpolation and moduleId properties of @Component are removed, and NgModuleFactory is removed.
  • UpgradeAdapter is removed. Hybrid AngularJS apps must use @angular/upgrade/static.
  • Vitest is the default test runner for new projects. Karma and Jasmine remain supported.

From 21 to 22:

  • Node.js 22.22.3, or 24.15.0 and later, and TypeScript 6.0 or later are required.
  • Components without a changeDetection property are OnPush by default. A migration adds ChangeDetectionStrategy.Eager where it is needed to keep the previous behavior.
  • strictTemplates defaults to true.
  • ComponentFactoryResolver, ComponentFactory, provideRoutes() and the Hammer.js integration are removed.
  • The default HTTP client no longer includes XHR support. Upload progress needs provideHttpClient(withXhr()).
  • The webpack-based builders are deprecated in favour of the @angular/build builders.

A short upgrade approach

  1. Update to the latest 20.3.x patch, confirm that the build and the tests pass, and commit.
  2. Run ng update @angular/core@21 @angular/cli@21, then ng update @angular/material@21.
  3. Review what the migrations changed, fix the host binding type errors, run the tests and release.
  4. Move CI and local machines to a Node.js version supported by Angular 22.
  5. Run ng update @angular/core@22 @angular/cli@22, then ng update @angular/material@22.
  6. Review the ChangeDetectionStrategy.Eager additions and the template type errors, run the tests and release.

When it is worth getting help

From v20 there are two upgrades to the current version, and both come with automated migrations. Help is worth it if the date is close and the team is busy with a release, if the app is a hybrid that still uses AngularJS through UpgradeAdapter, or if the build still depends on a custom webpack configuration. For hybrid apps see AngularJS migration. For apps further behind, see Angular upgrade strategy for old versions.

More in this section

Planning a migration or a micro-frontend platform?

In a 20-minute call you describe your situation and I tell you how I'd approach it. If it isn't worth doing yet, I'll say so.

Message me on LinkedIn