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.
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,linkedSignalandtoSignalbecame 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
inoperators, and opt-in type checking for host bindings. - Style guide updates. In new projects the CLI no longer generates suffixes such as
.componentby default. - Deprecation of
*ngIf,*ngForand*ngSwitchin 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
interpolationandmoduleIdproperties of@Componentare removed, andNgModuleFactoryis removed. UpgradeAdapteris 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
changeDetectionproperty areOnPushby default. A migration addsChangeDetectionStrategy.Eagerwhere it is needed to keep the previous behavior. strictTemplatesdefaults totrue.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/buildbuilders.
A short upgrade approach
- Update to the latest 20.3.x patch, confirm that the build and the tests pass, and commit.
- Run
ng update @angular/core@21 @angular/cli@21, thenng update @angular/material@21. - Review what the migrations changed, fix the host binding type errors, run the tests and release.
- Move CI and local machines to a Node.js version supported by Angular 22.
- Run
ng update @angular/core@22 @angular/cli@22, thenng update @angular/material@22. - Review the
ChangeDetectionStrategy.Eageradditions 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
- How to upgrade an Angular app that is many versions behind
- Angular version support and end of life
- Angular 9: end of life and how to upgrade
- Angular 10: end of life and how to upgrade
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