Sitemap

Member-only story

Angular 22: What’s new

--

Angular 22: Signal Forms are stable. OnPush is the new default. The future is here.

Press enter or click to view image in full size
Angular 22

🏗️ Framework (angular/angular)

Core & Reactivity

a) 🔥 Default change detection is now OnPush — PR

Components without an explicit changeDetection property now default to OnPush instead of the old Default (now renamed to Eager).

// Before Angular 22 — this was implicitly ChangeDetectionStrategy.Default
@Component({
selector: ‘app-dashboard’,
template: `<h1>{{ title }}</h1>`,
})
export class DashboardComponent {
title = ‘Dashboard’;
}

// Angular 22 - same code is now implicitly OnPush
// If you need the old behavior:
@Component({
selector: 'app-dashboard',
changeDetection: ChangeDetectionStrategy.Eager, // ← new name for "Default"
template: `<h1>{{ title }}</h1>`,
})
export class DashboardComponent {
title = 'Dashboard';
}

b) Signal-native debouncing with debounced() - PR

Angular added a debounced() function that takes a signal and a wait time, and returns a Resource.

protected readonly searchInput = signal(’‘);

// Debounced - settles after 500ms of no typing
protected readonly debouncedSearch = debounced(() => this.searchInput()…

--

--