🚀 ¿Por qué TanStack Start?
¿Cansado de las directivas confusas y el mecanismo de caché en constante cambio de Next.js? TanStack Start ofrece una alternativa refrescante con seguridad de tipos total, límites claros entre cliente y servidor y un modelo mental más simple. Esta guía te lleva a través de la construcción de una aplicación de lista de tareas completa, cubriendo todas las características principales desde la integración de base de datos hasta actualizaciones optimistas. Al final, entenderás cómo usar funciones de servidor, enrutamiento dinámico y componentes solo de cliente de manera efectiva.

🛠️ Configuración del Proyecto y Arquitectura Principal
Comienza creando el proyecto con npm create @tanstack/start@latest. Elige Tailwind CSS, ESLint, Drizzle ORM y Shadcn para una stack moderna. La estructura generada incluye un router.tsx que genera automáticamente un routeTree.gen.ts para seguridad total de tipos en todas las rutas. Archivos clave:
router.tsx: Configuración central de enrutamiento.routes/: Define páginas; usa$para parámetros dinámicos (ej.:$id).db/schema.ts: Define el esquema de la base de datos con Drizzle.
💡 Consejo Importante: Reinicia el servidor TypeScript después de la primera generación de
routeTree.gen.tspara limpiar errores iniciales.

⚡ Funciones de Servidor y Flujo de Datos
A diferencia de Next.js, TanStack Start ejecuta loaders tanto en el cliente como en el servidor. Usa createServerFunction para asegurar que las llamadas a la base de datos se ejecuten solo en el servidor. Para una aplicación de tareas, crea un serverLoader para obtener datos:
const serverLoader = createServerFunction({
method: 'GET',
handler: async () => {
return db.query.todos.findMany();
}
});
Para mutaciones (crear, actualizar, eliminar), usa métodos POST con el hook useServerFunction para manejar redireccionamientos y estados de error. Aquí hay una comparación de los patrones principales:
| Patrón | Caso de Uso | Comportamiento en el Cliente | Comportamiento en el Servidor |
|---|---|---|---|
createServerFunction | Obtención/mutación de datos | Hace solicitud fetch | Ejecuta directamente |
createServerOnly | Operaciones sensibles | Lanza error | Funciona normalmente |
createClientOnly | Lógica solo en navegador | Funciona normalmente | Lanza error |
createIsomorphic | Comportamiento dual | Ejecuta lógica del cliente | Ejecuta lógica del servidor |
Actualizaciones Optimistas: Para retroalimentación instantánea en la UI (ej.: alternar un checkbox), gestiona el estado local con useState e invalida el enrutador después de que la llamada al servidor se complete.

✅ Conclusión y Mejores Prácticas
TanStack Start simplifica el desarrollo full-stack eliminando directivas ambiguas. Puntos clave:
- Usa
createServerFunctionpara todas las operaciones de datos en el servidor. - Aprovecha componentes solo de cliente para funcionalidades específicas del navegador (ej.: almacenamiento local).
- Siempre envuelve las llamadas al servidor en
useServerFunctional invocarlas desde código del cliente. - Abraza la seguridad de tipos – el árbol de rutas generado automáticamente garantiza cero errores de enrutamiento en tiempo de ejecución.
📅 Fecha de la Información: 2024-05-24
Para patrones más avanzados, revisa nuestras herramientas de desarrollo con IA y montajes de PC económicos que superan consolas.
