Zoneless change detection separates Angular’s change-detection work from Zone.js scheduling. Angular still performs change detection, but a dedicated scheduler decides when cycles begin. section 10.3.5
Angular introduced a zoneless scheduler in v18 while initially running it alongside the conventional zone-based scheduler, allowing existing applications to upgrade without immediate breakage. section 10.3.5
The zoneless scheduler starts change-detection cycles when Angular observes signals or explicit framework activity, including:
- ChangeDetectorRef.markForCheck, including the call made by the async pipe. section 10.3.5
- ComponentRef.setInput when dynamically rendered components receive changed inputs. section 10.3.5
- Template-used signal changes, event-listener callbacks, and newly attached views that are already dirty. section 10.3.5
Enabling experimental zoneless support
Configure the application provider in app.config.ts: bootstrapApplication(AppComponent, { providers: [provideExperimentalZonelessChangeDetection()] }); section 10.3.5
Treat full zoneless operation as experimental: disabling Zone.js can expose bugs unless application updates consistently use signals, observables, or manual change-detection triggers. section 10.3.5
