TanStack
Aplicações TanStack Start e TanStack Router fazem build com Vite, então usam o @module-federation/vite diretamente. Um host TanStack Start consegue consumir remotes no servidor e no navegador: os componentes remotos são renderizados na resposta de SSR e depois hidratados.
Uma aplicação TanStack Router apenas client-side é uma aplicação Vite comum; siga o guia do Vite. O restante desta página trata da configuração com TanStack Start.
Suporte
- Hosts TanStack Start com renderização no servidor via Nitro
- Remotes com build em Vite, como uma biblioteca React que expõe componentes
- Singletons compartilhados para
react,react-dome seus próprios pacotes
Instalação
Configurar o remote
O remote é uma aplicação Vite React comum que expõe componentes:
Configurar o host TanStack Start
Adicione federation() antes de tanstackStart():
Duas configurações são importantes para o SSR:
hostInitInjectLocation: 'entry'injeta a inicialização do host no script de entrada. O TanStack Start não temindex.html, e isso garante que o runtime de federação esteja pronto antes dehydrateRootser executado.nitro.traceDepsmantém o React e o runtime de federação como externals do Node no bundle de servidor do Nitro. Sem isso, o Nitro embute o React no bundle e o remote acaba com uma instância diferente do React, o que quebra hooks e context.
Carregar componentes remotos
Importe os remotes com React.lazy e faça o preload deles no loader da rota, para que o runtime de federação os resolva no servidor antes da renderização. Sem o preload, o componente lazy ainda não foi resolvido durante o SSR e não renderiza nada.
Envolva os remotes em um error boundary se a página precisar continuar renderizando quando um remote estiver indisponível.
Declare os módulos remotos para que o TypeScript consiga resolvê-los, ou habilite o dts para baixar os tipos dos remotes automaticamente:
Exemplos
- Host e remote TanStack: host TanStack Start com SSR, um remote React 19 e um pacote de context compartilhado