angular-zoneless
ALWAYS use when working with Angular Zoneless, zoneless change detection, provideZonelessChangeDetection, or removing zone.js in Angular applications.
How do I install this agent skill?
npx skills add https://github.com/oguzhan18/angular-ecosystem-skills --skill angular-zonelessIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides comprehensive documentation and best practices for Angular Zoneless change detection. All referenced resources are official Angular/Google domains, and no security risks were identified.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
Angular Zoneless
Version: Angular 19+ (2025) Tags: Zoneless, Change Detection, Signals, Reactivity
References: Zoneless Guide • Signals
API Changes
This section documents recent version-specific API changes.
-
NEW: provideZonelessChangeDetection — Enable zoneless mode source
-
NEW: afterNextRender — Run code after rendering without zone.js
-
NEW: Experimental Zoneless — Available since Angular 17, stable in Angular 19+
-
NEW: signal() + computed() — Works without zone.js
Best Practices
- Enable zoneless change detection
export const appConfig: ApplicationConfig = {
providers: [
provideZonelessChangeDetection()
]
};
- Use signals for reactivity
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<p>Count: {{ count() }}</p>
<p>Double: {{ double() }}</p>
`
})
export class CounterComponent {
count = signal(0);
double = computed(() => this.count() * 2);
increment() {
this.count.update(c => c + 1);
}
}
- Use afterNextRender for DOM operations
constructor() {
afterNextRender(() => {
// Runs after rendering, outside zone
this.initChart();
});
}
- Use afterRender for repeated operations
constructor() {
afterRender(() => {
// Runs after every render
});
}
- Handle async without zone.js
@Component({
template: `
@if (data$ | async; as data) {
{{ data.name }}
}
`
})
export class AsyncComponent {
data$ = from(fetch('/api/data')).pipe(
share()
);
}
- Use ChangeDetectorRef manually when needed
constructor(private cdr: ChangeDetectorRef) {}
update() {
this.value = newValue;
this.cdr.markForCheck();
}
- Remove zone.js from polyfills
// polyfills.ts
// Remove or comment out zone.js import
// import 'zone.js';
- Use untracked for non-reactive reads
import { untracked } from '@angular/core';
ngOnInit() {
// Read without creating dependency
const value = untracked(() => this.signal());
}
- Handle browser events
@HostListener('click')
onClick() {
// Works without zone.js
this.count.update(c => c + 1);
}
- Test in zoneless mode
TestBed.configureTestingModule({
providers: [
provideZonelessChangeDetection()
]
});
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/oguzhan18/angular-ecosystem-skills/angular-zoneless">View angular-zoneless on skillZs</a>