Vinext 1.0: como migrar seu app Next.js
O problema que o Vinext resolve
Você construiu o produto em Next.js — o framework mais usado para apps em React — e na hora de mudar de hospedagem descobre que o app ficou amarrado ao jeito como foi publicado. Migrar parece reescrever tudo, e é aí que a decisão trava.
O Vinext ataca isso sendo um adaptador de tomada, não um framework novo: seu app continua igual, só muda o encaixe. Ele imita o comportamento do Next.js — não só os nomes das funções — e usa o Vite por baixo.
Passo a passo
1. Confira a compatibilidade antes de mexer em qualquer coisa
Este comando é o passo que não se deve pular: ele confere se o seu app é compatível e aponta o que precisa de ajuste. Personalizações no projeto são justamente o que costuma exigir trabalho.
2. Migrar o projeto
O init configura o Vite e a publicação sem mudar a estrutura do projeto. É o que mantém a migração barata: você não reescreve os caminhos nem a organização das páginas.
3. Publicar onde quiser
O mesmo app roda no plano gratuito do Cloudflare Workers, na Netlify ou na AWS Lambda. Para publicar nos Workers com o aquecimento de cache ligado:
4. Resolva o build que não termina
Site com dezenas de milhares de páginas passa horas gerando página a página na máquina de build — e boa parte delas quase não recebe tráfego. O Vinext move essa renderização para a rede da Cloudflare (é o cache warming): a nova versão sobe com 0% do tráfego, a rede gera as páginas, e só então a versão entra no ar. O build deixa de ser o gargalo.
5. Entenda o que sustenta a compatibilidade
O Vinext suporta as duas formas de montar rotas do Next.js — a antiga (Pages Router) e a nova (App Router) — inclusive as duas no mesmo app, com React Server Components, Server Actions, API routes, route handlers, middleware e navegação client-side. A compatibilidade passa de 99% nos recursos que os clientes mais pediram, medida toda noite rodando a bateria de testes do próprio Next.js contra o Vinext. Também há tracing compatível: OpenTelemetry e Sentry continuam funcionando.
Limites e cuidados
"use cache"(Cache Components, do Next.js 16) tem suporte limitado. A equipe priorizou o que os clientes de fato usam. Se a sua aplicação aposta nesse recurso, a migração não é agora.- Rode o
checkprimeiro, sempre. Ele é o único jeito de saber se o seu caso está coberto antes de gastar tempo. - Compatibilidade alta não é 100%. Sobra uma cauda de comportamentos que não bate com o Next.js — e é aí que um app real encontra o problema.
- Aquecimento de cache é da Cloudflare. Em Netlify ou AWS Lambda o app roda, mas esse ganho de deploy é do caminho Cloudflare.
- Projeto novo, mas já em produção: clientes rodam Vinext em produção em apps de muito tráfego; a manutenção é feita por agentes que leem as mudanças do Next.js e propõem correções — o que reduz, mas não elimina, a defasagem em relação ao upstream.
Por onde começar
Se o seu app é um Next.js pequeno e você só quer sair da amarração de hospedagem: rode npx vinext check, veja o relatório e decida. Se o seu caso é o build lento com muitas páginas, o teste que importa é outro — migrar um ambiente de staging, publicar com --warm-cache e comparar o tempo até a página estar servida. Comece por um app interno, não pelo que fatura.
- Blog do lançamento: https://blog.cloudflare.com/vinext-nextjs-on-vite/
- Documentação e matriz de compatibilidade: https://vinext.dev/
- Código: https://github.com/cloudflare/vinext