Stable Release in branch 17.0
17.3.12
Released 17 Jul 2024
(2 years ago)
SoftwareAngular
Version17.0
Initial release17.0.0
08 Nov 2023
(2 years ago)
Latest release17.3.12
17 Jul 2024
(2 years ago)
Active support end08 May 2024
(Ended 2 years ago)
Security support end15 Nov 2025
(Ended 8 months ago)
Commercial support
(HeroDevs-NES)
Yes
Release noteshttps://github.com/angular/angular/releases/tag/17.0.0
Source codehttps://github.com/angular/angular/tree/17.3.12
Documentationhttps://angular.io/docs
Angular 17.0 ReleasesView full list

What Is New in Angular 17.0

Angular 17.0 is a significant release that introduces a new declarative control flow, deferred views for lazy loading, and a fresh application template. It's a major step forward for developer experience and application performance.

Category Key Changes
New Features Declarative control flow, Deferred views, New looping syntax
Improvements SSR and Hydration enhancements, ESBuild dev server, Style and form updates
Developer Experience New app template, Improved docs, Angular.dev preview

How does the new declarative control flow work?

The new control flow is a built-in, HTML-based syntax that replaces *ngIf, *ngFor, and *ngSwitch. It's more type-safe, provides better ergonomics, and significantly improves performance by being a compile-time feature.

In practice, you now use @if, @for, and @switch blocks directly in your templates. This eliminates the need for the asterisk syntax and the underlying NgIf directive, making your templates more intuitive.

Example: Conditional Rendering

<div>
  @if (user.isLoggedIn) {
    <p>Welcome back!</p>
  } @else {
    <a routerLink="/login">Sign in</a>
  }
</div>

What are deferred views for lazy loading?

Deferred views allow you to declaratively lazy load a portion of a template and its dependencies. This is a game-changer for optimizing initial bundle size and load time without the complexity of manually setting up lazy-loaded routes.

You use the @defer block to wrap content that should be loaded later. You can specify triggers for when the loading should happen, like on viewport interaction, after a timer, or when the browser is idle.

Example: Defer on Viewport

@defer (on viewport) {
  <app-heavy-comments-component />
} @placeholder {
  <!-- Shown before loading -->
  <p>Comments loading soon...</p>
} @loading {
  <!-- Shown during loading -->
  <spinner />
}

What's new with server-side rendering and hydration?

Angular's SSR and hydration have graduated from developer preview to a stable, production-ready feature. The process is now more robust and provides a much smoother upgrade path for existing apps.

A key improvement is the ability to skip hydration for specific components or elements using the ngSkipHydration attribute. This is crucial for integrating third-party libraries or components that manipulate the DOM in ways incompatible with the hydration process.

<app-third-party-widget ngSkipHydration></app-third-party-widget>

What tooling and build process improvements are there?

The Angular CLI now uses Vite with ESBuild as the development server for all new projects. This replaces Webpack dev server by default, resulting in significantly faster startup and update times during development.

For existing projects, you can migrate by updating your angular.json configuration. The change is mostly under the hood, so your development workflow remains familiar but much faster.

How has the developer experience been enhanced?

The starting experience for new developers is completely revamped. Running ng new presents an interactive prompt to help you set up SSR, SSG, and routing, making it easier to build optimized applications from day one.

The documentation is also moving to a new domain, angular.dev, which features improved guides, interactive tutorials, and a modernized look. The classic control flow directives are not deprecated yet, giving teams ample time to migrate at their own pace.

FAQ

Is the old *ngIf/*ngFor syntax being removed?
No, the structural directives like *ngIf and *ngFor are not deprecated in v17. The new @if and @for control flow is an additive feature. You can migrate your templates when you're ready.

Do I have to use Vite and ESBuild now?
New projects created with Angular CLI 17.0+ will use Vite by default. Existing projects continue to use Webpack unless you manually update your build configuration in angular.json.

Can I use deferred views for lazy loading components?
Absolutely. Deferred views (@defer) are the new primary way to lazy load individual components within a route. They are more flexible and declarative than the previous method of using dynamic imports with ngComponentOutlet.

What's the benefit of the new built-in for loop?
The new @for loop has significantly better performance than *ngFor. It also includes built-in tracking, eliminating the need for the trackBy function in most cases, which reduces boilerplate and potential bugs.

Is the hydration process automatic now?
Yes, for apps using SSR, the hydration process is now enabled and stable by default. You can control it more granularly with the ngSkipHydration attribute on specific elements that should be skipped.

Releases In Branch 17.0

VersionRelease date
17.3.1217 Jul 2024
(2 years ago)
17.3.1105 Jun 2024
(2 years ago)
17.3.1022 May 2024
(2 years ago)
17.3.915 May 2024
(2 years ago)
17.3.808 May 2024
(2 years ago)
17.3.701 May 2024
(2 years ago)
17.3.625 Apr 2024
(2 years ago)
17.3.517 Apr 2024
(2 years ago)
17.3.410 Apr 2024
(2 years ago)
17.3.303 Apr 2024
(2 years ago)
17.3.228 Mar 2024
(2 years ago)
17.3.120 Mar 2024
(2 years ago)
17.3.013 Mar 2024
(2 years ago)
17.2.406 Mar 2024
(2 years ago)
17.3.0-rc.006 Mar 2024
(2 years ago)
17.3.0-next.128 Feb 2024
(2 years ago)
17.2.328 Feb 2024
(2 years ago)
17.2.222 Feb 2024
(2 years ago)
17.3.0-next.022 Feb 2024
(2 years ago)
17.2.114 Feb 2024
(2 years ago)
17.2.014 Feb 2024
(2 years ago)
17.2.0-rc.109 Feb 2024
(2 years ago)
17.1.308 Feb 2024
(2 years ago)
17.2.0-rc.008 Feb 2024
(2 years ago)
17.1.231 Jan 2024
(2 years ago)
17.2.0-next.131 Jan 2024
(2 years ago)
17.1.124 Jan 2024
(2 years ago)
17.2.0-next.024 Jan 2024
(2 years ago)
17.1.017 Jan 2024
(2 years ago)
17.0.910 Jan 2024
(2 years ago)
17.1.0-rc.010 Jan 2024
(2 years ago)
17.0.821 Dec 2023
(2 years ago)
17.1.0-next.521 Dec 2023
(2 years ago)
17.0.714 Dec 2023
(2 years ago)
17.1.0-next.414 Dec 2023
(2 years ago)
17.0.606 Dec 2023
(2 years ago)
17.1.0-next.306 Dec 2023
(2 years ago)
17.0.529 Nov 2023
(2 years ago)
17.1.0-next.229 Nov 2023
(2 years ago)
17.1.0-next.120 Nov 2023
(2 years ago)
17.0.420 Nov 2023
(2 years ago)
17.1.0-next.015 Nov 2023
(2 years ago)
17.0.315 Nov 2023
(2 years ago)
17.0.209 Nov 2023
(2 years ago)
17.0.108 Nov 2023
(2 years ago)
17.0.008 Nov 2023
(2 years ago)
17.0.0-rc.307 Nov 2023
(2 years ago)
17.0.0-rc.202 Nov 2023
(2 years ago)
17.0.0-rc.125 Oct 2023
(2 years ago)
17.0.0-rc.018 Oct 2023
(2 years ago)
17.0.0-next.811 Oct 2023
(2 years ago)
17.0.0-next.704 Oct 2023
(2 years ago)
17.0.0-next.627 Sep 2023
(2 years ago)
17.0.0-next.520 Sep 2023
(2 years ago)
17.0.0-next.413 Sep 2023
(2 years ago)
17.0.0-next.306 Sep 2023
(2 years ago)
17.0.0-next.230 Aug 2023
(2 years ago)
17.0.0-next.123 Aug 2023
(2 years ago)
17.0.0-next.016 Aug 2023
(2 years ago)