Angular 20

20 released 28 May 2025, latest 20.3.27.

Angular 20 is currently supported. Active support is scheduled to end on 19 November 2025. It reaches end of life on 28 November 2026.

What changed

Angular 20 advances the signal-based and zoneless direction introduced in earlier Angular releases. Zoneless change detection is stable, so applications can remove their dependency on Zone.js where their code and third-party libraries correctly notify Angular about state changes. Signal Forms is available as an experimental API, offering a signal-oriented approach to form state and validation, but it is not yet a low-risk replacement for every production reactive or template-driven form. The testing story also changes: Karma support is deprecated and the CLI offers Vitest-based testing as an experimental path, so test runners, browser-launcher assumptions, and coverage output deserve review. Angular 20 also updates the supported Node.js and TypeScript ranges across its minor releases, making build-tool compatibility part of the upgrade rather than an incidental dependency update. Angular is not AngularJS: AngularJS is a separate, earlier framework with its own versions and lifecycle. Teams running AngularJS should use /technology/angularjs instead.

What staying costs

Angular 20 remains within its supported window, so staying on it is not the same as running an unsupported framework line. The trade-off is that later Angular releases will continue to receive framework improvements, compatibility work, and the maturation of newer APIs first. Delaying upgrades can turn a routine version step into a larger project: Node.js and TypeScript constraints may move, deprecated testing infrastructure can become a more urgent migration, and code that relies on Zone.js-specific behavior may take longer to validate when zoneless adoption is eventually considered. Experimental APIs in this line, particularly Signal Forms and the Vitest integration, also carry change risk; adopting them broadly without isolating the dependency can create rework when their APIs or tooling behavior evolves.

What to do

First, inventory the current Angular minor version, Angular CLI, Node.js, TypeScript, RxJS, browser targets, test runner, and any dependencies that patch or depend on Zone.js. Use the Angular Update Guide and run the CLI update migrations in a representative branch before changing production projects. Build, test, and serve the application with the Node.js and TypeScript versions supported by the target Angular 20 minor release, including libraries and CI images rather than only developer machines. Treat the Karma deprecation as a planning item: assess the experimental Vitest route on a subset of tests, compare browser, DOM, mocking, coverage, and CI behavior, and retain a rollback path until the result is reliable. Evaluate zoneless change detection separately from the framework upgrade, starting with a feature area that has strong automated coverage and checking asynchronous updates, third-party widgets, and custom event handling. Keep Signal Forms behind a limited adoption boundary unless the team accepts experimental-API change risk. Finally, schedule regular minor-version updates while this line is supported, rather than allowing dependency and tooling changes to accumulate.

Release history

20.x

We can tell you what moving off Angular 20 involves.

What it takes to move off Angular 20 depends on what you built on it — the version you are on, how much depends on it, and how much of the work is mechanical. Leave your email with this version and we can tell you what that looks like for you.

Not sure yet? Get my plan