Astro 6: dev server sobre o Environment API do Vite, workerd local e compilador em Rust
O Astro 6.0 saiu em 10 de março, e eu tenho um interesse pessoal nesse lançamento: este blog que você está lendo é feito com Astro. Então li as notas com atenção dobrada, tanto pelo que muda para o ecossistema quanto pelo que vai mudar aqui em casa na próxima atualização.
Um dev server que se parece mais com produção
A mudança mais profunda não aparece em nenhuma API nova. O dev server do Astro foi reescrito em cima do Environment API do Vite, o que permite que o astro dev rode um ambiente de execução personalizado. Segundo a equipe, desenvolvimento e build agora compartilham os mesmos caminhos de código, então o comportamento local fica bem mais próximo do que vai para produção.
Quem mais ganha com isso, de imediato, é quem publica na Cloudflare. O adaptador @astrojs/cloudflare foi refeito e agora roda o workerd, o runtime dos Workers, no desenvolvimento, na pré-renderização e em produção. Na prática, dá para usar as APIs de cloudflare:workers localmente, com bindings para KV, D1, R2 e Durable Objects. Os contornos com Astro.locals.runtime deixam de ser necessários. Para mim, esse é o tipo de mudança que elimina uma categoria inteira de bug do tipo “funciona na minha máquina”.
Fontes, conteúdo ao vivo e CSP
O Astro 6 ganhou uma API de fontes embutida. Você declara as fontes em um array fonts no astro.config, usando provedores como Google ou Fontsource, e usa o componente <Font /> de astro:assets, que recebe a prop cssVariable e uma flag opcional preload. O Astro baixa e hospeda os arquivos, gera fallbacks otimizados e adiciona os preloads. É uma tarefa chata que quase todo site faz à mão, e é ótimo vê-la resolvida no framework.
As Live Content Collections ficaram estáveis. Elas buscam o conteúdo no momento da requisição, sem precisar de rebuild quando os dados mudam. São definidas com defineLiveCollection() em src/live.config.ts, usam as mesmas APIs das coleções de build e podem conviver com elas. O getLiveEntry() devolve um objeto com entry e error, o que obriga a tratar falhas de forma explícita.
A API de Content Security Policy também saiu do experimental. Basta ativar security.csp na configuração e o Astro calcula hashes de scripts e estilos automaticamente, tanto em páginas estáticas quanto dinâmicas. Há opções avançadas como algorithm, directives, styleDirective e scriptDirective.
Dependências e o que pode quebrar
Aqui mora o trabalho de migração. O Astro 6 usa Vite 7 em todos os pacotes @astrojs, então quem fixou uma versão própria do Vite precisa subir para a 7 ou superior. O realce de código passa a usar Shiki 4, e os schemas de conteúdo usam Zod 4, que deve ser importado de astro/zod.
E o ponto que mais vai pegar gente desprevenida: o Astro 6 exige Node 22 ou superior. O suporte ao Node 18 e ao Node 20 foi removido. Se o seu CI ou a sua hospedagem ainda roda Node 20, esse é o primeiro item da lista.
Os experimentos que apontam o futuro
Três recursos experimentais mostram para onde o projeto está indo:
- Compilador em Rust: um sucessor do compilador de arquivos
.astroescrito em Go. Ativa-se com a flagrustCompilerdentro deexperimentale instalando o pacote@astrojs/compiler-rs. A equipe diz que espera torná-lo padrão em uma versão major futura. - Renderização em fila: troca a renderização recursiva de componentes por uma abordagem em duas passadas, que primeiro monta uma fila ordenada da árvore e depois a renderiza. Segundo os benchmarks iniciais da equipe, a renderização fica até 2 vezes mais rápida. O plano é que vire padrão no Astro 7.
- Cache de rotas: uma API agnóstica de plataforma para cachear respostas renderizadas no servidor, com semântica de cache dos padrões web. Por requisição, usa-se
Astro.cachepara definirmaxAge,swretags, e a integração com as live collections permite invalidar páginas quando o conteúdo muda.
Minha leitura
O Astro 6 é uma versão mais de fundação do que de vitrine. A reescrita do dev server sobre o Environment API do Vite é o tipo de trabalho que o usuário só percebe quando para de ter surpresas entre o ambiente local e a produção. Para quem está na Cloudflare, é provavelmente a melhor atualização do Astro em muito tempo.
Para um site estático como este, os ganhos imediatos são mais modestos: a API de fontes e a CSP estável são bem-vindas, e a renderização em fila pode encurtar builds no futuro. O custo real é a exigência de Node 22 e as atualizações de Vite e Zod, que podem quebrar plugins e schemas. Minha recomendação é simples: confira a versão do Node no seu pipeline antes de qualquer outra coisa, depois atualize com calma, olhando os schemas de conteúdo.