TanStack
Las aplicaciones de TanStack Start y TanStack Router hacen el build con Vite, así que usan @module-federation/vite directamente. Un host de TanStack Start puede consumir remotes en el servidor y en el navegador: los componentes remotos se renderizan en la respuesta de SSR y luego se hidratan.
Una aplicación de TanStack Router solo de cliente es una aplicación de Vite normal; sigue la guía de Vite. El resto de esta página trata la configuración de TanStack Start.
Compatibilidad
- Hosts de TanStack Start con renderizado en el servidor a través de Nitro
- Remotes construidos con Vite, como una biblioteca de React que expone componentes
- Singletons compartidos para
react,react-domy tus propios paquetes
Instalación
Configurar el remote
El remote es una aplicación de Vite con React normal que expone componentes:
Configurar el host de TanStack Start
Añade federation() antes de tanstackStart():
Hay dos ajustes importantes para SSR:
hostInitInjectLocation: 'entry'inyecta la inicialización del host en el script de entrada. TanStack Start no tieneindex.html, y esto garantiza que el runtime de federación esté listo antes de que se ejecutehydrateRoot.nitro.traceDepsmantiene React y el runtime de federación como externals de Node en el bundle del servidor de Nitro. Sin esto, Nitro incluye React dentro del bundle y el remote acaba con una instancia de React distinta, lo que rompe los hooks y el contexto.
Cargar componentes remotos
Importa los remotes con React.lazy y precárgalos en el loader de la ruta para que el runtime de federación los resuelva en el servidor antes de renderizar. Sin la precarga, el componente lazy todavía no se ha resuelto durante el SSR y no renderiza nada.
Envuelve los remotes en un error boundary si la página debe seguir renderizándose cuando un remote no esté disponible.
Declara los módulos remotos para que TypeScript pueda resolverlos, o activa dts para descargar automáticamente los tipos de los remotes:
Ejemplos
- Host y remote de TanStack: host de TanStack Start con SSR, un remote con React 19 y un paquete de contexto compartido