← Torna al blog

Angular zoneless: cosa cambia davvero nella change detection

Change detection zoneless in un'applicazione Angular

Con le versioni più recenti, Angular offre la possibilità di eliminare Zone.js e passare a una change detection zoneless. È il default che ho scelto per questo stesso sito, e in generale per i progetti Angular più recenti che sviluppo: vale la pena capire cosa cambia davvero, non solo a livello di performance ma di abitudini di sviluppo.

Cosa faceva Zone.js finora

Zone.js intercetta eventi asincroni (click, timer, richieste HTTP) e innesca automaticamente un ciclo di change detection su tutta l'applicazione. Comodo, ma anche costoso: ogni evento, anche irrilevante per la UI, può far ripartire un controllo su interi alberi di componenti, ed è una delle cause più comuni di applicazioni Angular percepite come lente.

Cosa cambia in modalità zoneless

Senza Zone.js, Angular non sa più automaticamente quando un componente deve essere ri-renderizzato: serve un modello esplicito, basato su Signal e sull'input binding reattivo, per notificare i cambiamenti di stato. Le operazioni asincrone che aggiornano lo stato manualmente (es. subscription RxJS non basate su signal) devono essere gestite con attenzione, spesso con un semplice ChangeDetectorRef.markForCheck() o convertendo lo stato in signal.

Quando conviene adottarla

Zoneless conviene soprattutto in applicazioni nuove, dove si può progettare lo stato fin dall'inizio attorno ai Signal, e nei progetti dove le performance percepite sono un requisito, non un nice-to-have. In un progetto legacy con molto codice basato su RxJS puro, la migrazione va valutata con più cautela e può convenire farla in modo incrementale.

Zoneless non è solo un flag da attivare: è un cambio di mentalità nella gestione dello stato. Nei progetti che sviluppo da zero lo adotto ormai di default, perché il codice risultante è più esplicito su quando e perché la UI si aggiorna, un vantaggio che va oltre la semplice performance.

Hai un progetto simile da realizzare?

Raccontami la tua idea: valutiamo insieme la soluzione più adatta.

Contattami
FDBIT DI FERRARETTO DAVIDEP.IVA: 05041470237Sede legale: Via San Marco 25e, Oppeano (VR) - 37050Ufficio Registro Imprese: VeronaREA: 465659PEC: [email protected]LinkedIn