Angular moderno para times que já estão em produção.

Ajudo times a modernizar aplicações Angular maduras sem transformar evolução técnica em reescrita arriscada: fronteiras entre Signals e RxJS, prontidão para zoneless, estratégia de renderização, testes e decisões de arquitetura.

Uso estes textos como notas públicas do tipo de trabalho que faço e quero aprofundar: escopo de migração, gates de review, confiança no CI, dependências browser-only, limites de arquitetura e decisões de adoção que sobrevivem a mais de um release.

Modern Angular Playbook

Quer o mapa condensado?

O Playbook do Angular Moderno reúne o diagnóstico, a matriz de adoção, onze jogadas e um plano de 30 dias. Grátis, em inglês e português.

Você recebe os dois PDFs por email, pela lista do Dojo IA.

Abrir playbook →

Para devs

Guias técnicos sobre Signals, RxJS, zoneless, SSR, testes e padrões com código que dá para discutir em review.

Para tech leads

Matrizes de decisão, gates de review e planos de migração para evoluir bases Angular maduras sem campanha de reescrita.

Para CTOs e recrutadores

Um recorte claro do meu trabalho: modernização frontend com redução de risco, arquitetura mais legível e confiança de entrega.

Contratando, ou precisa de ajuda com Angular?

Sou o André Ramos, Senior Software Engineer disponível para vagas remotas (UTC−3). Ajudo times a modernizar Angular em produção sem reescrita.

Email →LinkedIn ↗

  • Bradesco Seguros
  • AB-InBev
  • OdontoPrev
  • Bit Health

★ Comece por aqui

Angular 22: o que mudou de verdade, e o que fazer num app em produção

Um guia sênior, focado em produção, do Angular 22: o default OnPush, os Signal Forms e as APIs de async signal estabilizados, as migrações de teste, as viradas de default menores, e um plano deliberado pra adotar.

11 min · 3 jun 2026

· 8 artigos

Guia · 7 min · 12 mai 2026

Signals sem briga com RxJS

Uma fronteira de produção para Signals, computed, streams RxJS e interop, sem reescrever por estética uma arquitetura que já funciona.

Ler artigo →

Nota · 6 min · 30 mai 2026

O que adotar, testar ou deixar para depois no Angular 21

Um filtro de adoção para Angular 21: o que entra em trechos que já vão mudar, o que merece branch e o que deve ficar longe de fluxos críticos.

Ler artigo →

Nota · 5 min · 20 mai 2026

Um checklist curto antes de testar zoneless

Um checklist de prontidão para testar zoneless em uma aplicação Angular existente sem confundir spike de compatibilidade com plano de rollout.

Ler artigo →

Guia · 10 min · 30 mai 2026

Um plano de 30 dias para modernizar apps Angular maduros

Um plano de modernização para times que precisam de auditoria, mudanças de baixo risco, spikes isolados e decisões que sobrevivem a code review.

Ler artigo →

Guia · 7 min · 15 mai 2026

Standalone sem transformar NgModules em vilões

Uma regra prática para usar componentes standalone, providers por rota e NgModules remanescentes em aplicações Angular maduras.

Ler artigo →

Guia · 7 min · 16 mai 2026

Control flow não é só sintaxe mais limpa

Uma lente de review para control flow no Angular: quando migrar templates tocados, como escolher `track` e onde `@switch` ajuda a modelar estados.

Ler artigo →

Nota · 6 min · 31 mai 2026

Como eu adotaria Signal Forms agora que são estáveis no Angular 22

Um filtro de adoção pra Signal Forms agora que são estáveis no Angular 22: use em forms novos, mantenha reactive forms onde já funcionam.

Ler artigo →

Guia · 8 min · 3 jun 2026

OnPush é o default no Angular 22: o que quebra e o que fazer

Por que o Angular 22 faz do OnPush o default, o que de fato quebra, os dois jeitos de corrigir, e como os Eager que a migração adicionou servem de backlog de limpeza.

Ler artigo →
· 9 artigos

Guia · 6 min · 13 mai 2026

Quando migrar uma suíte Angular para Vitest

Vitest virou o test runner padrão do Angular CLI, mas migrar uma suíte existente ainda é experimental: quais specs migrar primeiro, o que o fakeAsync quebra, e como manter o CI confiável.

Ler artigo →

Guia · 9 min · 1 jun 2026

fakeAsync e o erro ProxyZone: consertando testes Angular no Vitest

Por que fakeAsync, tick e waitForAsync lançam o erro ProxyZone no runner Vitest do Angular, e as duas correções: o patch experimental de zone testing, ou a reescrita para fake timers do Vitest.

Ler artigo →

Guia · 7 min · 1 jun 2026

De Karma para Vitest no Angular: a config que realmente roda

O que o test target de Vitest do Angular v21 realmente é (uma linha), de onde vêm polyfills e styles, o install que tira o Karma, e as poucas opções que valem adicionar.

Ler artigo →

Guia · 7 min · 2 jun 2026

Fake timers do Vitest no Angular: o modelo mental depois do fakeAsync

Como pensar nos fake timers do Vitest no Angular depois do fakeAsync: os dois trabalhos que o fakeAsync fundia, o mapa de API, as partes específicas do Angular, e quando não usar fake timers.

Ler artigo →

Guia · 6 min · 2 jun 2026

Por que seu async validator fica PENDING com os fake timers do Vitest

A falha silenciosa de tempo no Vitest: por que um async validator do Angular fica PENDING depois de uma migração de fakeAsync, por que o advanceTimersByTime não basta, e a linha exata entre uma Promise e RxJS mais HttpClient.

Ler artigo →

Guia · 8 min · 7 jun 2026

Testando componentes no Angular com Vitest: TestBed, jsdom e browser mode

Como os testes de componente do Angular se comportam de verdade no Vitest: o TestBed não muda, o DOM é jsdom (sem layout, sem CSS de verdade), e os specs que precisam de um browser real são os que valem mover pro browser mode do Vitest.

Ler artigo →

Guia · 8 min · 8 jun 2026

Mockando serviços e HttpClient no Angular com Vitest: vi.fn, spies e DI

O mapa de spies de Jasmine para Vitest nos testes Angular (vi.fn, vi.spyOn, mockReturnValue), por que um mock por DI vence o vi.mock para serviços, e como o HttpTestingController segue funcionando com provideHttpClientTesting.

Ler artigo →

Guia · 8 min · 8 jun 2026

Coverage e CI do Vitest no Angular: providers, thresholds e o gap do Karma

Como coverage e CI funcionam com o builder Vitest do Angular: a flag ng test --coverage, os coverageThresholds que derrubam o build, o reporter junit pro CI, e a coisa que o builder não expõe e o karma-coverage expunha.

Ler artigo →

Guia · 7 min · 12 jun 2026

Escolhendo o test runner do Angular em 2026: Vitest, Jest ou Karma

Um mapa de decisão pra pergunta do test runner no Angular, por onde a sua suíte realmente começa, e por que 'Cypress vs Vitest' é a pergunta errada.

Ler artigo →
· 10 artigos

Guia · 7 min · 17 mai 2026

Angular CLI MCP e código Angular gerado por IA

Um checklist de produção para usar Angular CLI MCP, ai-config e revisão humana em código Angular gerado por IA.

Ler artigo →

Guia · 7 min · 25 mai 2026

Um AGENTS.md que faz a IA escrever Angular moderno

Um guia de produção para escrever um arquivo de regras de agente que nomeia a versão, a fronteira de estado, a sintaxe de template e as armadilhas que fazem a IA gerar código desatualizado.

Ler artigo →

Guia · 12 min · 27 mai 2026

WebMCP no Angular: como expor tools ao agente de IA do browser (e quando esperar)

Como o Angular expõe tools WebMCP para um agente de IA do browser (bootstrap, rotas, services e Signal Forms), mais a superfície de segurança que se abre e onde eu ainda esperaria antes de colocar em produção.

Ler artigo →

Nota · 6 min · 28 mai 2026

WebMCP vs Angular CLI MCP server: tools em runtime vs ajuda em dev-time

Qual MCP do Angular você quer de verdade: o CLI MCP server de dev-time, que ajuda um assistente a escrever seu código, ou o WebMCP de runtime, que deixa um agente do browser chamar seu app publicado.

Ler artigo →

Guia · 7 min · 29 mai 2026

Transformando Signal Forms em tools de agente de IA

Como o Angular transforma um Signal Form numa tool que o agente consegue chamar, o que a inferência de schema precisa do seu modelo e onde eu usaria isso antes de sair do status experimental.

Ler artigo →

Guia · 7 min · 4 jun 2026

Um CLAUDE.md para Angular moderno: memória, não só regras

Como o sistema de memória do Claude Code funciona num codebase Angular: onde o CLAUDE.md mora, por que importar o AGENTS.md em vez de duplicar, e como regras com escopo de path mantêm componente, estado e teste fora de um arquivo só que envelhece.

Ler artigo →

Guia · 8 min · 5 jun 2026

Segurança de WebMCP no Angular: o agente que chama suas tools pode ser sequestrado

Um guia de segurança para o WebMCP do Angular: por que uma tool exposta age com a autoridade do usuário, por que o JSON schema não é fronteira de confiança, e as defesas antes de expor qualquer coisa que altera dado.

Ler artigo →

Guia · 8 min · 9 jun 2026

O Angular CLI MCP server: setup, tools e como conectar no seu assistente de IA

Como configurar o Angular CLI MCP server: o comando exato pra subir, o formato da config do client, as tools que ele expõe e como conectar no Claude Code, no Cursor e no VS Code.

Ler artigo →

Guia · 8 min · 19 jun 2026

Como eu uso agentes de IA no dia a dia sem terceirizar a decisão

Um filtro de produção para trabalho diário com agentes de IA: o que eu delego, o que eu mantenho comigo e onde o review continua sendo a fronteira de engenharia.

Ler artigo →

Guia · 10 min · 19 jun 2026

Spec-driven development com Claude, Codex e o plugin Superpowers

Um modelo de trabalho para usar Claude Code, Codex e Superpowers ao redor de uma spec, para agentes implementarem decisões em vez de inventá-las no meio do diff.

Ler artigo →
· 3 artigos

Guia · 9 min · 18 mai 2026

Estado HTTP sem transformar tudo em Signals

Um guia técnico para fronteiras de estado HTTP no Angular com HttpClient, RxJS, toSignal e experimentos cautelosos com httpResource.

Ler artigo →

Guia · 10 min · 24 mai 2026

O código que quebra quando Angular fica zoneless

Um guia técnico para revisar timers, subscriptions, forms, callbacks de terceiros e testes antes de um spike zoneless no Angular.

Ler artigo →

Guia · 10 min · 26 mai 2026

SSR, hydration e @defer sem chute

Um guia prático de renderização no Angular com server routes, configuração de hydration, bordas com @defer, incremental hydration e proteção para DOM browser-only.

Ler artigo →
· 5 artigos

Erro · 8 min · 5 jun 2026

NG0100 ExpressionChangedAfterItHasBeenCheckedError: por que ele aparece no Angular zoneless

Por que o NG0100 ExpressionChangedAfterItHasBeenCheckedError aparece depois de ir pra zoneless ou Angular 22, o que ele significa agora, a armadilha do fixture.detectChanges() no teste, e os fixes conforme de onde veio a mudança.

Ler artigo →

Erro · 8 min · 6 jun 2026

NG0500 Hydration Node Mismatch: o conserto de verdade não é ngSkipHydration

O que o NG0500 Hydration Node Mismatch quer dizer, a lista curta de causas reais (DOM manipulado direto, HTML inválido que o browser normaliza, biblioteca de DOM de terceiro, HTML alterado no caminho), por que o ngSkipHydration é torniquete, e o fix de cada caso.

Ler artigo →

Erro · 8 min · 8 jun 2026

NG0200: dependência circular na injeção de dependências

O que o NG0200 quer dizer, como ler a cadeia A -> B -> A que o Angular imprime, as três formas que produzem o ciclo, e os consertos em ordem, da reestruturação até o forwardRef como último recurso.

Ler artigo →

Erro · 9 min · 9 jun 2026

NG0203: por que o inject() falha fora do contexto de injeção

Por que o Angular estoura o NG0203 quando o inject() roda fora do contexto de injeção, a janela exata em que o inject() é válido, as armadilhas comuns, e os fixes ranqueados do field initializer ao runInInjectionContext.

Ler artigo →

Erro · 7 min · 9 jun 2026

NG0950: lendo um input obrigatório antes do Angular preencher

Por que o NG0950 do Angular dispara quando um signal input obrigatório é lido antes do binding, quando os inputs ficam disponíveis de fato, e os três consertos: ler no ngOnInit / computed / effect, dar um valor padrão, ou fazer o binding no pai.

Ler artigo →
· 3 artigos

Guia · 9 min · 21 mai 2026

Facade Pattern no Angular: quando o componente sabe demais

Um guia de produção sobre Facade Pattern no Angular: quando criar, o que ela deve assumir, o que não deve esconder e como testar esse limite.

Ler artigo →

Guia · 9 min · 22 mai 2026

Adapter Pattern no Angular: isolando APIs e bibliotecas browser-only

Um guia de produção sobre Adapter Pattern no Angular: onde traduzir contratos externos, como manter componentes limpos e quando um wrapper não compensa.

Ler artigo →

Guia · 10 min · 23 mai 2026

Strategy Pattern no Angular: trocando regras sem espalhar switches

Um guia de produção sobre Strategy Pattern no Angular: quando um switch vira fronteira, como selecionar implementações com DI e como evitar indireção decorativa.

Ler artigo →