Introdução
Durante muitos anos o Angular utilizou uma biblioteca chamada Zone.js para descobrir quando precisava atualizar a interface.
Sempre que ocorria um evento assíncrono, o Angular era notificado e executava o processo de Change Detection.
Com a chegada dos Signals, o framework passou a caminhar para um novo modelo chamado Zoneless.
Objetivos de aprendizagem
- Explicar o papel histórico do Zone.js na detecção de mudanças.
- Reconhecer as notificações que permitem ao Angular operar em modo Zoneless.
- Avaliar benefícios, limitações e estratégia de migração.
O que é Zone.js?
Exemplos de operações monitoradas:
setTimeout(() => {});
setInterval(() => {});
fetch("/api/users");
button.addEventListener("click", () => {});
Promise.resolve();Sempre que algo acontecia, o Angular executava o Change Detection.
O problema do Zone.js
O modelo funciona bem, mas possui um custo.
Imagine uma aplicação com centenas de componentes.
App
├── Header
├── Sidebar
├── Dashboard
├── Charts
├── Table
└── FooterQuando ocorre um clique simples:
Usuário clicou em um botão
↓
Zone.js detecta
↓
Angular executa Change Detection
↓
Árvore inteira é verificadaMesmo quando apenas um pequeno trecho da tela mudou.
O que é Zoneless?
Isso é possível graças ao uso de Signals e mecanismos modernos de reatividade.
Como os Signals ajudam?
Antes:
Evento
↓
Zone.js
↓
Change Detection
↓
Árvore inteiraAgora:
Signal alterado
↓
Angular sabe quem depende dele
↓
Atualiza apenas os consumidoresExemplo:
const count = signal(0);
count.set(1);O Angular sabe exatamente quais componentes utilizam esse Signal.
Benefícios do Zoneless
Menor bundle
Removendo o Zone.js, a aplicação carrega menos código.
Menos trabalho desnecessário
Ao invés de verificar toda a árvore de componentes:
App
├── Header
├── Sidebar
├── Dashboard
└── Footero Angular atualiza apenas quem realmente depende do estado alterado.
Melhor integração com Signals
Signals fornecem rastreamento granular de dependências.
Isso combina perfeitamente com o modelo Zoneless.
Como habilitar?
No Angular 21 e posteriores, Zoneless é o comportamento padrão. Verifique apenas se o projeto não usa provideZoneChangeDetection() para restaurar o modo baseado em Zone.js.
No Angular 20, habilite explicitamente no bootstrap:
import { provideZonelessChangeDetection } from "@angular/core";
bootstrapApplication(AppComponent, {
providers: [provideZonelessChangeDetection()],
});Depois, remova zone.js e zone.js/testing dos polyfills de build e teste. A configuração isolada não entrega a redução de bundle enquanto a dependência continuar carregada.
O que muda para o desenvolvedor?
Grande parte do código continua igual.
Porém algumas práticas tornam-se mais importantes:
- Utilizar Signals
- Evitar mutações silenciosas
- Preferir estado reativo
- Entender melhor o fluxo de atualização da UI
Zoneless e OnPush
Uma dúvida comum.
Comparação
| Aspecto | Zone.js | Zoneless |
|---|---|---|
| Dependência externa | Sim | Não |
| Bundle | Maior | Menor |
| Atualizações | Mais amplas | Mais granulares |
| Integração com Signals | Parcial | Excelente |
| Performance | Boa | Melhor em cenários modernos |
Fluxo visual
Angular tradicional
Evento
↓
Zone.js
↓
Change Detection
↓
Verificação da árvoreAngular Zoneless
Signal
↓
Dependências rastreadas
↓
Atualização específicaCasos de Uso
Perguntas técnicas
O que é Zone.js?
O que significa Angular Zoneless?
Por que Zoneless pode melhorar performance?
Qual a relação entre Signals e Zoneless?
Pergunta técnica para revisão
Zone.js vai desaparecer do Angular?
Conclusão
Zoneless reduz a dependência de interceptação global ao apoiar a atualização granular da interface. A adoção deve considerar que Zone.js continua suportado e presente em muitas aplicações.
Verifique seu entendimento
Qual prática favorece uma migração segura para Zoneless?
Resposta: Adotar Signals e testar os caminhos que notificam mudanças. Signals e notificações explícitas tornam as atualizações observáveis; testes revelam dependências implícitas do Zone.js.
Revisão do artigo
Pontos principais
- — Zoneless substitui o rastreamento global por notificações explícitas.
- — Signals ajudam a localizar e reduzir atualizações desnecessárias.
- — A migração deve ser medida e validada, não apenas ativada por configuração.