Angular 17 has officially landed!
The major additions fit neatly into four buckets: the new ApplicationBuilder, Signals, Template Syntax, and the @defer command.
ApplicationBuilder
The ApplicationBuilder is what drives ng build and ng serve. Behind the scenes, it has moved away from webpack entirely. The new engine is esbuild, a Go-based tool that delivers a substantial speed boost.
SSR is now baked into the ApplicationBuilder as well. Previously, integrating server-side rendering meant pulling in @nguniversal. That's no longer necessary—SSR is a core part of Angular now. If you're upgrading an existing project, you'll need to opt into the new builder manually.
Signals
Signals have seen three notable shifts since Angular 16.
The first is the removal of the mutate method—it's simply gone.
The second concerns how signals notify subscribers. In version 16, calling an update method always triggered the signal, regardless of whether the object reference changed. Angular 17 now performs a reference check, and only fires when that reference actually changes.
Third, we have local change detection. This allows the change detection cycle to target a single component deep within the tree rather than the whole tree.
For this to work, two conditions must be met: the change must originate from a Signal (not a click event or a synchronous function), and the component must be configured with the OnPush change detection strategy.
New Template Syntax & @defer
The headline feature here is undeniably the revamped template syntax for if, for, and switch, alongside the brand-new defer. By adding @defer to a block, Angular automatically generates a lazy-loaded chunk for any components inside it. There's no extra configuration needed—simply use it.
For a deeper dive, the official blog post and videos are the best starting points, and there's plenty of community material out there to explore as well.

blog.angular.dev