Angular 15: end of life and how to upgrade
Angular 15 made the standalone APIs stable and moved Angular Material to MDC-based components. It has been unsupported since May 2024.
Release and support dates
Angular 15 was released in November 2022. Active support ended in May 2023 and long-term support ended in May 2024. It receives no security patches today. The dates for every major are in Angular version support and end of life.
What Angular 15 introduced
- Stable standalone APIs. Standalone components, directives and pipes left developer preview, and an app can start with
bootstrapApplication. - Tree-shakable standalone APIs for the router and HttpClient, such as
provideRouter. - The directive composition API, which adds directives to a host through
hostDirectives. - A stable image directive.
NgOptimizedImageleft developer preview. - Functional router guards, and lazy routes that unwrap default exports.
- MDC-based Angular Material components. Many components got a new DOM structure and new styles. The old implementations stayed available as deprecated
legacyimports. - A simpler
ng newoutput, withouttest.ts,polyfills.tsandenvironmentsfiles. - Deprecations:
providedIn: 'any'andprovidedInwith an NgModule. The team also announced the end of new releases of@angular/flex-layout.
What needs attention when you upgrade
From 15 to 16:
- Node.js 16.14 or 18.10 and later, TypeScript 4.9.3 or later and Zone.js 0.13 or later are required.
- ngcc is removed, so libraries compiled with View Engine no longer work.
- These APIs are removed:
entryComponents,ANALYZE_FOR_ENTRY_COMPONENTS,ReflectiveInjector,renderModuleFactoryandBrowserTransferStateModule. XhrFactorymust be imported from@angular/common.- Tests get
MockPlatformLocationby default, and tests that mockActivatedRoutemay need changes.
From 16 to 17:
- Node.js 18.13 or later, TypeScript 5.2 or later and Zone.js 0.14 or later are required.
- The legacy Angular Material components are not part of Material 17. Angular 17 can run with Material 16 as a temporary option that ends with v18.
- Zone.js deep imports such as
zone.js/dist/zonemust becomezone.jsandzone.js/testing. - Router options such as
urlUpdateStrategyandparamsInheritanceStrategyare set throughprovideRouterorRouterModule.forRoot. They are no longer public properties ofRouter. NgSwitchcompares with===.- Styles of destroyed components are removed automatically.
A short upgrade approach
- Update to the latest 15.2.x patch, confirm that the build and the tests pass, and commit.
- Replace or update every library that still ships View Engine code before the step to v16.
- Run
ng update @angular/core@16 @angular/cli@16, thenng update @angular/material@16. - Migrate the
legacyMaterial imports to the MDC components before v17. - Update third-party libraries, fix deprecations, run the tests and release.
- Repeat for the next major. The next stop is Angular 16.
When it is worth getting help
An app on v15 that still imports legacy Material components has a deadline inside the upgrade: those components leave the package in v17. Help is worth it if many screens depend on them, if the app uses @angular/flex-layout heavily, or if the upgrade should also deliver the move to standalone components. The plan is in Angular upgrade strategy for old versions. For a platform split across teams, see Rewrite, hybrid or micro-frontends.
More in this section
- Angular 16: end of life and how to upgrade
- Angular 17: end of life and how to upgrade
- Angular 18: end of life and how to upgrade
- Angular 19: 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