Frontends com Vibecoding · Capítulo 4 de 30 · 18 min
Investigar uma stack e priorizar atualizações
Você sai com uma entrega que integra rede, dependências, compatibilidade e plano de migração.
Este capítulo faz parte do curso gratuito Frontends com Vibecoding. Para marcar como concluído e salvar o progresso, abra este capítulo na página do curso.
Um radar só serve com rótulo de ação por item: alerta age nesta semana, atualização espera a janela de manutenção e novo se avalia no projeto seguinte. Quem aprova atualização num site no ar decide pelos 16 itens rotulados, a esteira de build escolhida e o que não fazer até dezembro.
Alerta pede ação nesta semana: aplique a correção ou congele a versão atual até conseguir aplicar. Atualização espera a janela de manutenção, a hora marcada em que o site pode oscilar sem prejudicar ninguém. Novo você avalia no próximo projeto e nunca vira migração do que já funciona.
Um portal de contabilidade parado há um ano separa a fila em três num quarto de hora. O React na faixa da CVE-2025-55182 e o gerador de balancete que recebe HTML do cliente são alerta. O mapa em Leaflet 1.x fica onde está, e o HTMX 4 sugerido pelo agente é recusado.
Dois itens mudam a base do próximo projeto. O Vite 8 com Rolldown 1.0 virou um empacotador único em Rust, estável na 8.2.2 desde 20 de agosto de 2026. Um build de 19 mil módulos caiu de 40,10 segundos para 1,61 segundo, cerca de 25 vezes; projeto pequeno ganha de duas a cinco vezes.
O Astro chegou à linha 7, estável na 7.3.2 de 8 de setembro de 2026. As coleções de conteúdo ao vivo, a API de fontes e os Cloudflare Workers de primeira classe vieram na 6, e fazem dele a escolha para relatório estático e microsite. Na tela, ApexCharts 6.0 e 7.1 trouxeram anotação arrastável, filtro cruzado, desfazer e refazer, visão compartilhável por URL, plugins e canvas, sem quebrar gráfico existente.
TanStack Table v9 ficou estável em 04/08/2026 com plugins que só entram no pacote quando usados. MapLibre GL JS v6 exige WebGL2 e só distribui ESM: quem depende de UMD congela na v5. Lucide 1.0, de junho de 2026, é a primeira major estável do conjunto de ícones do shadcn/ui, com mais de 1.600 ícones.
No PDF, Typst 0.15 gera PDF/UA-1 e PDF/A-2a no mesmo arquivo e dá erro explícito quando não conforma, em vez de um PDF silenciosamente errado. WeasyPrint 69 corrige a CVE-2026-49452 e é obrigatório para quem renderiza HTML que veio de fora.
O CSS e os tokens, os valores de estilo guardados com nome, ganharam dois recursos. A função contrast-color() entrou em Baseline Newly Available em abril de 2026, com Chrome 147, Firefox 146 e Safari 26, e escolhe entre preto e branco pelo maior contraste que o navegador calcula.
Ela não substitui a medição da razão de 4,5:1, e navegador anterior ignora a declaração, então escreva a cor de reserva junto. A alvenaria nativa virou grid-lanes dentro do Grid, com o Safari 26 na frente.
O formato DTCG de design tokens é trabalho de um Community Group do W3C, sem status de Recommendation. Peça o arquivo de tokens nesse formato assim mesmo, citando o rascunho de editor pela data em que você o leu. Video.js v10 juntou os times de Video.js, Plyr, Vidstack e Media Chrome na Mux num player novo, em beta com 5 kB gzip na versão mínima.
Three.js r184 com o Safari 26 embarcando WebGPU cobre todos os navegadores relevantes no renderizador novo. Spark 2.0 transmite mundos com mais de 100 milhões de splats no navegador, inclusive em celular. A camada semântica virou pré-requisito de IA: Cube e dbt se integraram em 16/07/2026, com acurácia próxima de 100% contra text-to-SQL direto.
WCAG 2.2 AA (a norma de acessibilidade, no nível intermediário) é o alvo técnico adotado neste curso. A obrigação legal depende do país e do setor. WCAG 3.0 segue rascunho. Para o seu site, trate o piso AA como cláusula de contrato e a camada semântica como requisito de todo painel que uma IA vai responder.
A esteira de build segue a base. Vite 8 serve Astro, SvelteKit e projeto novo. Turbopack é o padrão do Next.js 16 em desenvolvimento e build, com ressalva para configuração webpack complexa. Rspack 2.2 fica com quem precisa manter a configuração webpack, com a versão Rust do React Compiler desde a 2.1. Bun, esbuild e SWC seguem como antes.
Qualidade entra na mesma esteira. Biome 2.3 ou superior tem mais de 423 regras cientes de tipo sem o compilador TypeScript completo, com suporte experimental a Vue, Svelte e Astro. Lightning CSS cuida do CSS que não passa pelo Tailwind. Storybook 10 é só ESM, 29% menor na instalação, e serve de catálogo e teste visual.
Vitest roda os testes. Playwright faz o teste de ponta a ponta e a regressão visual do SVG compilado entre PRs, as propostas de mudança. O axe-core com Playwright vira portão de acessibilidade no CI, a esteira automática que roda a cada envio.
Dois números circulam sobre o alcance desse portão, e eles medem coisas diferentes. A Deque, que mantém o axe-core, fala em 57% dos problemas encontrados, contando volume de itens; a leitura por critério de sucesso fica entre 30% e 40% de cobertura. Somar ou trocar um pelo outro é o erro mais frequente em relatório de conformidade, e o resto continua sendo revisão humana.
Pa11y e Lighthouse CI completam a auditoria, e o mesmo axe-core é o motor do relatório de acessibilidade do Lighthouse e do painel do Chrome, o que explica ferramentas aparentemente independentes concordarem. MSW simula o dado assíncrono em teste com TanStack Query, e Sharp ou Squoosh geram AVIF e WebP no build.
Laboratório ao vivo: o radar filtrado sem JavaScript
Filtrar o radar por rótulo
Vite 8 e Rolldown 1.0
Bundler único em Rust: 19 mil módulos de 40,10 s para 1,61 s
Novo
avalie no próximo projeto
React 19.2 e Compiler 1.0
Compilador estável; patch do CVE-2025-55182, que atinge as versões 19.0.0 a 19.2.2
Atualização
atualize na próxima janela
WeasyPrint 69
CVE-2026-49452: obrigatória para quem renderiza HTML não confiável
Alerta
aja nesta semana
TanStack Table v9
Estável em 04/08/2026, com plugins tree-shakable
Novo
avalie no próximo projeto
Next.js 16.3
Turbopack padrão e até 90% menos memória em sessão longa de desenvolvimento
Atualização
atualize na próxima janela
HTMX 4 em beta
Quebra atributos, headers e eventos: fique na 2.0.10
Alerta
aja nesta semana
MapLibre GL JS v6
WebGL2 obrigatório e só ESM: fique na v5 se o build depende de UMD
Novo
avalie no próximo projeto
ApexCharts 7.1
Anotações, cross-filtering, undo/redo, motor de plugins e canvas
Novo
avalie no próximo projeto
DTCG
Formato de design tokens do W3C Community Group, ainda sem status de Recommendation
Atualização
atualize na próxima janela
Leaflet 2.0 em alfa
Alfa sem data marcada de lançamento: fique na linha 1.x
Alerta
aja nesta semana
Lucide 1.0
Junho de 2026, com mais de 1.600 ícones
Novo
avalie no próximo projeto
Astro 6
Live Content Collections, Fonts API e Cloudflare Workers
Novo
avalie no próximo projeto
Suporte: o filtro roda na pseudo-classe :has() do navegador atual, sem uma linha de JavaScript. Sem ela, nenhum cartão esmaece e os doze seguem visíveis e legíveis.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
O que não fazer neste trimestre: os oito alertas do manual
| Item | Rótulo | Ação recomendada |
|---|---|---|
| HTMX 4.0 em beta | Alerta | Fique na 2.0.10; a 4.0 quebra atributos, cabeçalhos e eventos |
| Leaflet 2.0 em alfa | Alerta | Fique na 1.x; sem data de lançamento, a migração fica fora do plano |
| Chakra UI v3 | Alerta | Reescrita sobre Panda CSS e Ark UI; calcule o custo antes de sair da v2; Mantine é a troca natural para quem desiste |
| Paper.js | Alerta | Última release em julho de 2024; prefira Fabric.js, Konva ou PixiJS |
| DuckDB-Wasm | Alerta | Defasado do núcleo (base 1.5.4, Arrow 17); não assuma paridade; DuckDB 2.0 previsto para o fim de 2026 sem confirmação no Wasm |
| WeasyPrint abaixo da 69 | Alerta | Atualize nesta semana se o pipeline recebe HTML de terceiros (CVE-2026-49452) |
| paged.js | Alerta | Troca de mantenedores e quebras anunciadas; congele a versão e planeje a saída |
| SVG chamado via img | Alerta | Não herda variável CSS da página; use SVG inline ou compile duas versões, com fill próprio em todo text |
Abra o package.json, a lista de pacotes do projeto, e marque cada linha com um dos três rótulos antes de aprovar qualquer atualização. Aplique nesta semana tudo o que caiu em alerta, e agende o resto para a janela de manutenção. Guarde os itens novos, como Astro 6 e TanStack Table v9, num arquivo de decisões para o próximo projeto.
Leia a stack pela rede e feche as sete decisões iniciais
A tecnologia de um site vaza em quatro lugares do painel de rede, e ler esses sinais evita contratar a infraestrutura errada. Stack é a lista de tecnologias do site, como a lista de materiais de uma obra.
Quem decide a stack do próprio negócio separa sinal de dedução e escolhe a família. As sete decisões iniciais ficam fechadas antes de pedir a primeira tela.
Só conta como evidência um sinal técnico direto: cabeçalho de resposta, caminho de arquivo, atributo no HTML entregue ou cookie. Tudo o mais é inferência e entra marcado como tal. Os cabeçalhos entregam o servidor e a rede que distribui a página; os caminhos carregam a marca de quem os gerou, como /_next/ para Next.js.
Os atributos que o framework (a base pronta do site) injeta no HTML nunca somem; os cookies denunciam o serviço de publicação. Esses sinais são confiáveis porque cada camada precisa se identificar para funcionar: escondê-los quebraria o próprio site.
A tecla F12 abre o painel; recarregue com o cache (a cópia guardada pelo navegador) desligado e leia o peso total no rodapé, o teto da sua página. Uma página que pesa o dobro da referência já saiu perdendo antes de qualquer desenho.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Uma vaga de emprego publicada por uma empresa grande prova que uma equipe usa determinada tecnologia, e para de provar aí. Amazon, Mercado Livre, Apple e Duolingo ocupam pontos diferentes entre montar a tela no servidor e montar no navegador. O ponto muda tela a tela dentro da mesma empresa.
A direção de 2026 empurra as quatro para o mesmo lado: menos código no navegador, mais decisão pronta no servidor. A Apple divide o próprio site entre aplicativo de música em página única e páginas de marca em HTML e pouco JavaScript. O que se transfere é o princípio que continua verdadeiro na sua escala; a infraestrutura deles fica lá.
Um conjunto de 26 sites de alto padrão se divide em três famílias, e quem vai mexer no site daqui a seis meses decide qual é a sua. O construtor de sites, Webflow ou Framer, em cerca de 11 deles, serve a quem entrega o site e vai embora, com o cliente publicando sozinho depois.
O código próprio com texto em repositório separado, Next.js e Sanity em cerca de oito, serve a quem tem programador em casa. O artesanal, HTML e CSS próprios em cerca de quatro, serve ao site mantido por uma pessoa só. O construtor cobra na saída, porque deixá-lo exige refazer o site inteiro.
Ler a família antes de contratar economiza reunião. A imobiliária que ia pagar uma agência para replicar o site de um concorrente admirado descobriu no painel de rede um construtor pronto, sem código para copiar.
Sete decisões cobrem o começo de qualquer projeto, uma por camada. Linguagem: TypeScript, que na versão 7.0 liga o modo estrito por padrão. É ele que pega o erro que o agente (o assistente de IA que escreve código) produz com toda a confiança. Framework: React com Next.js para aplicação e Astro para conteúdo.
Build: ferramenta em Rust ou Go, Vite ou Turbopack, no lugar de webpack e Babel. Renderização: estática e incremental por padrão, com renderização por requisição só para dado que precisa estar fresco. Estilo: utilitário ou gerado no build, sem CSS calculado no navegador, que quebra com componente de servidor e pesa a página.
Estado: a cópia do dado do servidor separada do estado que só existe na tela.
A sétima é a medição, e ela tem regra escrita. As três medidas de página valem sobre visualizações reais, no 75º percentil, com celular e computador contados em segmentos separados. Pelo menos 75 de cada 100 visualizações válidas do segmento precisam atingir o limiar.
O limiar de bom é 2,5 segundos ou menos para a maior pintura, 200 milissegundos ou menos para a resposta ao toque e 0,1 ou menos de deslocamento de layout. O operador é "ou menos": escrever "menor que" exclui a página que ficou exatamente no limiar. Nenhuma mudança desses três valores foi anunciada até setembro de 2026.
A janela de 28 dias que aparece em toda conversa sobre isso pertence ao conjunto de dados de campo usado pelo relatório do Search Console. Esse relatório só aprova a URL quando as três medidas ficam em bom, e colar os 28 dias na definição do limiar é erro de atribuição.
Dez perguntas de triagem fecham a stack numa folha, e a matriz abaixo cruza 12 cenários com a stack recomendada. SEO real (aparecer no Google por mérito) pede meta-framework, Next.js ou Astro. Poucos elementos ricos pedem SVG; milhares de redesenhos pedem Canvas ou WebGL. Editor com conectores pede JointJS ou GoJS. Tempo real começa em ECharts.
Velocímetro com identidade própria pede D3 sobre SVG. Push num sentido só (o servidor avisa, o navegador ouve) é SSE. Cálculo pesado é WebAssembly. Pouco código de cola é Zustand ou Pinia, e auditoria é Redux Toolkit. Orçamento de desempenho e observabilidade entram no primeiro sprint, porque produto visual sem esse controle degrada em silêncio.
Matriz decisória: 12 cenários e a stack recomendada em setembro de 2026
| Cenário | Stack recomendada | O que decide |
|---|---|---|
| Board mensal fechado | HTML estático, D3 ou Observable Plot e Print CSS | Leitura e impressão, sem operar a tela |
| Investor update | Astro 7, MDX, D3 ou ECharts e PDF via Playwright | Relatório estático premium com PDF fiel |
| Marketing performance diária | React ou Vue, ECharts, Plotly ou ApexCharts 7 e APIs | Dado que muda todo dia e muitos gráficos |
| Growth self-service | Looker, Power BI ou Tableau embutido com shell narrativo | Quem explora é o time, sem pedir tela nova |
| MMM e incrementalidade | Python ou R, Meridian ou Robyn, Plotly ou Vega e export HTML | Modelagem estatística antes da tela |
| Geomarketing | deck.gl 9.3, MapLibre v6 e Kepler.gl | Mapa com muitos pontos; MapLibre v6 exige WebGL2 |
| SaaS B2B analytics | React ou Svelte, headless BI (Cube e dbt) e visx ou D3 | A métrica vive em código versionado, fora da tela |
| Relatório offline seguro | HTML único, DuckDB-Wasm ou SQLite Wasm e dados locais | Abre sem internet; o dado não sai da máquina |
| Portal C-level recorrente | Next.js 16.3 ou Astro 7, camada semântica e auth com RLS (permissão por linha) | Login, permissão por linha e número consistente |
| Relatório com prova de conformidade | Typst 0.15 | PDF/UA-1 e PDF/A-2a no mesmo arquivo |
| Editor colaborativo de fluxograma | React ou Solid, JointJS ou GoJS, Konva ou PixiJS, Yjs e WASM cirúrgico | Conectores, edição simultânea e cálculo pesado só no gargalo |
| Planilha embutida no produto | Univer (ou Fortune-sheet em migração de Luckysheet) | Planilha real dentro do produto |
Escreva as sete decisões, linguagem, framework, build, renderização, estilo, estado e medição, num parágrafo só, uma linha cada, para colar no início de todo pedido ao agente. Junte a linha da matriz do seu cenário antes de pedir a primeira tela, e marque no laudo cada campo como visto ou deduzido.
Todos os capítulos de Frontends com Vibecoding
- 01Projetar o briefing, o repertório da marca e o custo de manter
- 02Dirigir o prompt e avaliar a entrega do agente
- 03Escolher a stack e projetar suas dependências
- 04Investigar uma stack e priorizar atualizações
- 05Construir a identidade com tokens, CSS moderno e DESIGN.md
- 06Construir componentes, usar o registro e publicar o catálogo
- 07Projetar uma linguagem de ícones e ilustração
- 08Projetar menus, popovers e modais acessíveis
- 09Adaptar o layout ao celular e ao contêiner
- 10Projetar movimento, assinatura e narrativas por rolagem
- 11Preparar imagens, ícones e vídeo para a web
- 12Construir profundidade e dirigir a montagem de vídeo
- 13Construir formulários e estados de interação
- 14Publicar conteúdo encontrável em vários idiomas
- 15Projetar gráficos e painéis pela decisão
- 16Dimensionar tabelas e organizar o cálculo das métricas
- 17Escolher mapas, diagramas e cenas espaciais
- 18Comparar direção visual em Stripe e Apple
- 19Avaliar busca, conversão e padrões de comércio
- 20Auditar acessibilidade e contraste nos dois temas
- 21Validar desempenho, autenticação e segurança
- 22Planejar a modernização e publicar com reversão
- 23Construir o projeto final, medir a cara de IA e revisar
- 24Comparar modelos e interpretar benchmarks
- 25Calcular custo por tarefa e definir governança
- 26Supervisionar o modelo que opera o computador
- 27Configurar ambiente, skills e o contêiner de contexto
- 28Aplicar direção de arte, UX writing e padrões de código
- 29Construir um aplicativo instalável e resiliente
- 30Produzir apresentações e PDF com critérios de entrega