Carlos Cifuentes
Angular versions · v15

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.

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

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. NgOptimizedImage left 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 legacy imports.
  • A simpler ng new output, without test.ts, polyfills.ts and environments files.
  • Deprecations: providedIn: 'any' and providedIn with 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, renderModuleFactory and BrowserTransferStateModule.
  • XhrFactory must be imported from @angular/common.
  • Tests get MockPlatformLocation by default, and tests that mock ActivatedRoute may 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/zone must become zone.js and zone.js/testing.
  • Router options such as urlUpdateStrategy and paramsInheritanceStrategy are set through provideRouter or RouterModule.forRoot. They are no longer public properties of Router.
  • NgSwitch compares with ===.
  • Styles of destroyed components are removed automatically.

A short upgrade approach

  1. Update to the latest 15.2.x patch, confirm that the build and the tests pass, and commit.
  2. Replace or update every library that still ships View Engine code before the step to v16.
  3. Run ng update @angular/core@16 @angular/cli@16, then ng update @angular/material@16.
  4. Migrate the legacy Material imports to the MDC components before v17.
  5. Update third-party libraries, fix deprecations, run the tests and release.
  6. 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

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