TL;DR: Angular v22, released June 3, 2026, is the most consequential Angular release in years. It promotes Signal Forms, Angular Aria, and the resource/httpResource APIs from experimental to production-stable, sets OnPush as the new default change detection strategy, introduces the @Service decorator and injectAsync for cleaner service definitions and lazy loading, and adds significant template improvements including spread syntax, arrow functions, and @switch exhaustive checks. TypeScript 6 is supported.

"Production Ready Is the Name of the Game"

The Angular team's theme for v22 is straightforward: stop shipping APIs as experiments and start shipping them as the foundations developers can build on with confidence. Three APIs that have been in developer preview or experimental status crossed the finish line in this release.

Three APIs Now Stable for Production

Signal Forms: The New Standard for Angular Form Handling

Signal Forms replace both Reactive Forms and Template-driven Forms with a unified, signal-based approach. The API combines strong TypeScript type safety with the declarative ergonomics of template binding and the fine-grained reactivity of Angular Signals.

import { form } from "@angular/forms/signals";

class Payment {
  readonly paymentModel = signal({ paymentType: '', amount: 0 });
  readonly f = form(paymentModel, schema => {
    required(schema.paymentType, { message: 'Required field' });
  });
}

When a single field changes, only that field's dependents re-evaluate — no unnecessary full-component re-renders. Signal Forms are fully compatible with the existing ControlValueAccessor ecosystem, meaning third-party component libraries require no immediate changes.

Angular Aria: Accessible by Default

Angular Aria's twelve UI accessibility patterns are now stable and production-ready. The package handles all accessibility semantics — keyboard navigation, screen reader announcements, ARIA attributes — while developers focus on styling and business logic. Full integration with Signal Forms means accessibility metadata flows automatically through form state.

resource, rxResource, and httpResource: Declarative Async Data

export class WeatherComponent {
  selectedCity = signal('Chicago');
  weather = httpResource<{ temperature: number; condition: string }>(() =>
    `https://api.example.com/v1/forecast/${this.selectedCity()}`
  );
}

When selectedCity changes, httpResource automatically re-fetches. Loading, error, and data states are managed by the API — no manual RxJS subscriptions required. The new chain() method allows resources to depend on other resources, with the second request automatically waiting for the first to complete.

3APIs graduated to stable in this release
100K+GitHub stars on angular/angular
TypeScript 6Official support
OnPushNew default change detection strategy

OnPush Is Now the Default

Starting in v22, all new Angular applications use OnPush change detection by default. This aligns with Zoneless Angular and means performance-optimized change detection applies to every new component without explicit configuration. The old default — ChangeDetectionStrategy.Default — is renamed to ChangeDetectionStrategy.Eager for clarity, and the CLI's migration script handles the rename automatically for existing projects.

💡
Upgrading from v21
Run ng update @angular/core@22 and let the automatic migration handle ChangeDetectionStrategy.Default → Eager renaming. Signal Forms are backwards-compatible with ControlValueAccessor, so third-party form components continue to work. Review the deprecation of Webpack builders and @angular-devkit/build-angular if you use non-standard build configurations.

New APIs That Improve Day-to-Day Development

API / Feature What It Does
@Service decorator Cleaner replacement for @Injectable({ providedIn: 'root' })
injectAsync Lazy-loads services on demand with code splitting support
Template spread syntax Use {...obj}, [...arr], and spread in function calls directly in templates
Arrow functions in templates Inline simple arrow functions instead of creating helper methods
@switch multi-case matching Multiple cases share a single output block; exhaustive checks via @default never
HTML element comments Comment individual attributes and bindings directly in templates
Platform Navigation API Router integrates with the browser's native Navigation API
withExperimentalAutoCleanupInjectors Route injectors automatically destroyed when route is no longer active

The @Service Decorator in Practice

import { Service } from '@angular/core';

@Service()
export class UserStore {
  private users = signal<User[]>([]);
  readonly users$ = this.users.asReadonly();
  
  addUser(user: User) {
    this.users.update(current => [...current, user]);
  }
}

That single @Service() annotation replaces @Injectable({ providedIn: 'root' }) for the vast majority of use cases, making the intent unmistakably clear.

ℹ️
Coming in Q3 2026: @boundary Error Boundaries
Angular v22 previews @boundary { } @error (let err) { } — template-level error boundaries that catch component failures without crashing the entire page. A payment checkout component that throws an error will render fallback content rather than a blank screen. Full developer preview is targeted for Q3 2026.

Angular for the Agentic Era

v22 also focuses Angular's AI story. Angular MCP tools — including devserver.wait_for_build, devserver.start, and devserver.stop — are now stable, enabling self-healing loops where AI agents build, observe output, and iterate autonomously. Angular Agent Skills provide AI coding assistants with up-to-date context on modern Angular patterns including Signal Forms and Angular Aria.

Experimental WebMCP support allows Angular apps to expose structured tools directly to AI assistants running in the browser — a forward-looking integration for agentic UI workflows.

Key Takeaways

  • Signal Forms, Angular Aria, and resource/httpResource are now production-stable — build with confidence
  • OnPush is the new default change detection strategy — performance by default for all new apps
  • @Service decorator and injectAsync simplify service definitions and enable lazy loading
  • Template gains spread syntax, arrow functions, multi-case @switch, and HTML comments
  • TypeScript 6 fully supported; Angular MCP tools stabilized for agentic development
  • Webpack and @angular-devkit/build-angular deprecated — migrate to the application builder
🔗
Official Sources & Downloads
Angular v22.0.0 Official GitHub Release Notes
Angular Full CHANGELOG
Angular CLI Latest Releases & Downloads