A Treta do Module Federation e Next.js: Uma História de Falta de Colaboração



This content originally appeared on DEV Community and was authored by Rodrigo Albornoz

Durante meus estudos sobre micro-frontends, mais especificamente sobre o uso de Module Federation com Next.js, procurei formas de fazer essa integração utilizando o novo bundler do framework, o Turbopack.

No entanto, acabei me deparando com uma série de issues no GitHub e publicações em fóruns da comunidade que revelaram um debate intenso (e bastante interessante) dentro do ecossistema React/Next.js.

Neste texto, compartilho o que descobri (pois sou fofoqueiro): o que aconteceu, quais foram os principais pontos de atrito e por que isso importa para quem trabalha com React e micro-frontends.

Module Federation — o que é e por que importa

O Module Federation, criado por Zack Jackson (@scriptedalchemy), é um recurso introduzido no Webpack 5 que permite dividir aplicações em módulos independentes, carregados em runtime (tempo de execução).

Isso possibilita uma arquitetura de micro-frontends flexível, escalável e distribuída. Na prática, diferentes times podem atualizar partes da aplicação de forma isolada, sem precisar rebuildar tudo, o que melhora a agilidade, a independência e a performance em projetos grandes.

Next.js e a filosofia da Vercel

O Next.js, mantido pela Vercel, é um dos frameworks React mais populares atualmente, reconhecido pela sua simplicidade, performance e recursos nativos como SSG e SSR.

Porém, sua filosofia é baseada no build-time, ou seja, grande parte do código é processada e empacotada antes do deploy. Isso oferece ganhos em performance e previsibilidade, mas torna complexa a adoção de soluções que dependem de carregamento dinâmico em runtime, como o Module Federation.

Build-Time vs Runtime: o conflito filosófico

O conflito entre Next.js e Module Federation é menos técnico e mais conceitual. Enquanto a Vercel acredita que todo código deve estar disponível no momento do build, o Module Federation parte do princípio oposto: compartilhar e carregar módulos dinamicamente em runtime.

Essa diferença de paradigma cria uma barreira natural para a integração entre as duas abordagens.

O conflito com a Vercel

Zack tentou colaborar com o time do Next.js por anos para desenvolver uma integração oficial com o Module Federation, mas enfrentou forte resistência. Segundo ele, a arquitetura do Next.js foi construída de forma fundamentalmente incompatível com a filosofia do Federation.

A resposta da Vercel, em resumo, foi: “não está nos nossos planos”.

Em julho de 2022, Zack foi direto ao ponto:

“There will never be official support for Module Federation from Vercel. They believe everything should be available at build time. It will never be supported by Next.js.”

Diante disso, ele criou uma solução comercial (@module-federation/nextjs-mf) para financiar o desenvolvimento. Meses depois, em setembro de 2022, abriu o código parcialmente como open source, também como forma de pressionar a Vercel.

Em um podcast de novembro de 2024, Zack anunciou oficialmente o fim do suporte ao Next.js:

“The plugin has been a very painful development life cycle… it requires a lot of resources and it’s not wanted. Turbopack is on the way, and we don’t know if it will support Federation, its death was already written on the wall.”

“We will not support a framework that does not want it. If Vercel decides to support Federation as first-class, I will double the resources to help them, but I can’t do it alone without internal support.”

Curiosamente, após o anúncio, a Vercel começou a sinalizar interesse em reconsiderar o suporte, mas até hoje não há nada oficial consolidado.

Caminhos alternativos e o futuro

O Next.js oferece uma solução oficial chamada Multi-Zones, que permite dividir a aplicação em múltiplas áreas independentes. Porém, essa abordagem ocorre em build-time e exige recarregamento completo entre zonas, o que pode reduzir a fluidez da experiência e limita o conceito real de micro-frontends.

Enquanto isso, o Module Federation continua sendo o padrão de mercado para micro-frontends dinâmicos, amplamente adotado por empresas de grande porte. Outras ferramentas, como Single-SPA e Rspack, também vêm ganhando espaço na discussão sobre o futuro dessa arquitetura.

Open Source ou Open Corporate?

Esse debate levanta uma questão importante: até que ponto vale a pena depender de tecnologias controladas por empresas privadas?

A Vercel tem seus méritos, mas o caso do Module Federation mostra como interesses comerciais podem limitar a inovação aberta. Por outro lado, frameworks como o Nuxt.js, mantido pela comunidade, reforçam o valor de ecossistemas verdadeiramente open source.

Recentemente, a Meta transferiu o React para a Linux Foundation, criando a React Foundation, um passo simbólico para dar mais autonomia à comunidade. Ainda assim, a maioria dos core devs do React continuam sendo da Meta e da Vercel, o que mantém a sombra corporativa presente.

Conclusão

O embate entre Module Federation e Next.js é um reflexo natural do atrito entre inovação aberta e estratégia empresarial. Zack Jackson e o time da Vercel têm visões diferentes sobre o futuro do frontend e a comunidade está no meio desse impasse.

Independentemente de qual lado prevaleça, entender essas tensões é fundamental para fazer escolhas de arquitetura mais conscientes, escaláveis e alinhadas com o futuro do ecossistema React.


This content originally appeared on DEV Community and was authored by Rodrigo Albornoz