Voltar ao Blog
    Performance
    Frontend

    Vite 8 e o Rolldown: Como é Trocar Todo o Bundler por Rust em Produção

    Vite 8 unificou esbuild e Rollup num único bundler em Rust — builds até 30x mais rápidos. Testei a migração neste site e documento o que quebrou, o que ganhou e por que ainda seguramos uma versão do Rolldown.

    Publicado em ·10 min de leitura·por Bernardo Gomes

    Em março de 2026 o Vite 8 saiu do beta com uma mudança estrutural: substituiu a dupla esbuild (dev) + Rollup (produção) por um único bundler, o Rolldown, escrito em Rust. A promessa é de 10 a 30x de ganho em builds completos, e depois de rodar essa combinação em produção neste próprio site, dá pra confirmar: o ganho é real, mas a migração tem armadilhas específicas que a maioria dos guias não menciona.

    ℹ️

    Fonte: vite.dev/blog — 'Vite 8.0 is out!' (março/2026) e 'Vite 8.1 is out!' (releases subsequentes). O Rolldown é um bundler compatível com a API do Rollup mas desenhado desde o início para também substituir o papel do esbuild — unificando as duas ferramentas que o Vite historicamente combinava.

    O que muda tecnicamente

    • Um bundler só: sem mais esbuild pro dev server e Rollup pra build de produção — o Rolldown cobre os dois papéis
    • Transforms via Oxc (também em Rust) e Lightning CSS, no lugar do PostCSS puro em alguns caminhos
    • API de plugin compatível com Rollup na maioria dos casos, mas plugins que dependem de hooks internos ou de comportamento específico do esbuild podem quebrar silenciosamente
    • Builds de 10 a 30x mais rápidos em projetos grandes — o ganho é proporcional ao tamanho do grafo de módulos, então projetos pequenos sentem menos diferença

    O que quebrou na migração real

    Três configurações costumam quebrar sem aviso claro: plugins que manipulam a saída via hooks específicos do Rollup que o Rolldown ainda não replica 1:1, opções de manualChunks com lógica muito específica de código de terceiros, e transforms customizados de CSS que assumiam o comportamento do PostCSS puro. Nenhum desses é um bug do Vite 8 — é o preço esperado de trocar a implementação por baixo de uma API que parecia estável.

    bash
    # Migração recomendada: passo intermediário com rolldown-vite
    # antes de saltar direto pro Vite 8
    npm install rolldown-vite@latest
    # valida se o projeto builda igual com Rolldown, ainda na API do Vite 7
    
    # depois do rolldown-vite passar limpo:
    npm install vite@8

    Por que travamos uma versão específica do Rolldown

    Neste projeto, o pnpm-workspace.yaml trava explicitamente uma versão do Rolldown com um comentário direto: 'vite 8.2.0 aceita rolldown ~1.2.0; a 1.2.2 foi publicada 10h antes desta atualização. Segurar em 1.2.1 (5 dias) pelo mesmo motivo do commit anterior — remover este pin na próxima atualização deliberada, uma vez que a 1.2.x tenha amadurecido'. É a mesma lógica de minimumReleaseAge do post sobre o Shai-Hulud: numa ferramenta nova, dar alguns dias de idade a cada versão antes de adotá-la reduz a chance de herdar uma regressão — ou pior, uma versão comprometida — publicada há poucas horas.

    ⚠️

    Rolldown ainda é jovem (menos de dois anos de vida pública) e o próprio time do Vite recomenda o caminho intermediário via rolldown-vite antes do salto direto para o Vite 8 em projetos grandes. Não pule a etapa de validação em CI achando que 'é só trocar a versão'.

    💡

    Se o seu build de produção já passa de 30 segundos, o Vite 8 provavelmente compensa o esforço de migração. Se passa de 2 minutos, o ganho de tempo de CI sozinho já paga a tarde investida em ajustar os três ou quatro pontos de atrito que a troca de bundler costuma expor.