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 →Modern Angular
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
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.
Guias técnicos sobre Signals, RxJS, zoneless, SSR, testes e padrões com código que dá para discutir em review.
Matrizes de decisão, gates de review e planos de migração para evoluir bases Angular maduras sem campanha de reescrita.
Um recorte claro do meu trabalho: modernização frontend com redução de risco, arquitetura mais legível e confiança de entrega.
Sou o André Ramos, Senior Software Engineer disponível para vagas remotas (UTC−3). Ajudo times a modernizar Angular em produção sem reescrita.
★ Comece por aqui
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.
Decisões de adoção
· 8 artigosUma fronteira de produção para Signals, computed, streams RxJS e interop, sem reescrever por estética uma arquitetura que já funciona.
Ler artigo →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 →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 →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 →Uma regra prática para usar componentes standalone, providers por rota e NgModules remanescentes em aplicações Angular maduras.
Ler artigo →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 →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 →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 →Testes e Vitest
· 9 artigosVitest 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 →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 →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 →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 →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 →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 →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 →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 →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 →Angular + IA
· 10 artigosUm checklist de produção para usar Angular CLI MCP, ai-config e revisão humana em código Angular gerado por IA.
Ler artigo →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 →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 →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 →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 →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 →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 →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 →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 →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 →Guias técnicos profundos
· 3 artigosUm guia técnico para fronteiras de estado HTTP no Angular com HttpClient, RxJS, toSignal e experimentos cautelosos com httpResource.
Ler artigo →Um guia técnico para revisar timers, subscriptions, forms, callbacks de terceiros e testes antes de um spike zoneless no Angular.
Ler artigo →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 →Erros do Angular, explicados
· 5 artigosPor 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 →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 →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 →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 →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 →Design Patterns com Angular
· 3 artigosUm 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 →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 →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 →