A Cloudflare lançou a versão 1.0 do Vinext, um framework de código aberto que permite executar aplicações Next.js sobre Vite, com a possibilidade de implantá-las em plataformas como Cloudflare Workers, Netlify e AWS Lambda. O projeto é voltado para aplicações novas e existentes, incluindo aquelas que usam Pages Router ou App Router, em vez de limitar o suporte à arquitetura mais recente do Next.js.
Compatibilidade mais ampla com aplicações Next.js
O Vinext passou de um experimento impulsionado por inteligência artificial que durou uma semana no momento de seu lançamento em fevereiro para um framework que, segundo a Cloudflare, é usado em produção com aplicações de alto tráfego e dinâmicas. A empresa afirma que sua compatibilidade com a maioria dos recursos solicitados pelos clientes supera 99%, enquanto continua testando o comportamento real das aplicações, e não apenas simulando APIs com os mesmos nomes.
A versão oferece suporte aos modos App Router e Pages Router, além de aplicações híbridas, componentes React no servidor, ações de servidor, rotas de API, manipuladores de rotas, middlewares e navegação do lado do cliente. Também abrange renderização de páginas no servidor, regeneração incremental de páginas (ISR), exportação para ativos estáticos e revalidação em segundo plano ou sob demanda.
O que muda na prática?
O Vinext unifica as funções de armazenamento em cache entre os dois modos e os ambientes de execução compatíveis, com suporte adicional ao Workers Cache. Ele também oferece rastreamento compatível com o Next.js, permitindo manter as configurações atuais do OpenTelemetry e do Sentry, e integra-se, no Cloudflare Workers, às ferramentas nativas de monitoramento do Workers.
A versão adiciona suporte direto ao ambiente workerd durante o desenvolvimento e em produção, com acesso a recursos da Cloudflare, como otimização de imagens e Hyperdrive. Por outro lado, o suporte ao roteamento use cache associado aos Cache Components continua limitado; a Cloudflare esclarece que a prioridade atual são as funções essenciais do framework das quais as aplicações em produção dependem.
Aquecimento do cache antes do lançamento
O Vinext 1.0 oferece um mecanismo para renderizar previamente as páginas dos modos App Router e Pages Router durante o processo de compilação e, em seguida, fornecê-las por meio de ISR e invalidá-las por rota ou etiqueta. No entanto, ele adiciona uma opção diferente para aplicações que contêm dezenas ou centenas de milhares de URLs: transferir parte da renderização prévia do dispositivo de compilação para a rede da Cloudflare.
O recurso de cache warming usa os indicadores habituais do Next.js para determinar quais páginas devem ser preparadas e também pode identificar as páginas com tráfego elevado. Antes de converter a nova versão em tráfego de produção, a Cloudflare implanta uma versão do Worker com zero por cento do tráfego e, em seguida, solicita as páginas dessa versão para preencher o cache; após a conclusão do processo, a implantação pode ser promovida. Isso reduz a espera pela compilação sequencial de páginas com poucos acessos, mas está, na prática, vinculado à implantação na Cloudflare quando esse recurso é usado.
Testes e caminho de migração
A Cloudflare afirma que o projeto depende de milhares de testes que abrangem o comportamento do framework, os servidores nos modos de desenvolvimento e produção e os destinos de implantação em Node.js e Cloudflare Workers. O conjunto abrangente de testes do Next.js também é executado no Vinext todas as noites para detectar regressões resultantes de alterações upstream. O processo de migração inclui dois comandos para verificar a compatibilidade do projeto e configurar o Vite e a implantação, mantendo a estrutura anterior do projeto Next.js: npx vinext check e depois npx vinext init.
O Vinext está disponível para projetos novos e existentes e pode ser implantado no Cloudflare Workers com aquecimento do cache usando o comando npx @vinext/cloudflare deploy --warm-cache. A matriz de compatibilidade e o suporte incompleto a recursos como Cache Components continuam sendo pontos que as equipes devem revisar antes de adotar a migração em aplicações complexas.