Cada vez que arrancamos un SaaS nuevo, la primera pregunta técnica es la misma: ¿qué stack usamos? Después de más de treinta proyectos en producción, hemos ido convergiendo a una respuesta por defecto: Next.js en el frontend y Node.js con Express en el backend. Este artículo explica por qué.
No es la única combinación válida, y en algunos proyectos usamos otras (FastAPI, Flask, Go). Pero cuando no hay una restricción explícita del cliente, este es el stack que elegimos. Aquí van los criterios.
Los cinco criterios que evaluamos
- Velocidad de entrega inicial: cuánto tarda el equipo en tener algo demostrable.
- Rendimiento en producción: latencia, uso de recursos y coste de infraestructura a escala.
- Mantenibilidad a 3-5 años: cuánto dolor produce evolucionar el código cuando el equipo cambia.
- Ecosistema y contratación: cuánta gente hay disponible para trabajar con este stack.
- Interoperabilidad: cuán bien se integra con los servicios que un SaaS típico necesita (pagos, IA, banca, notificaciones).
Por qué Next.js en el frontend
Next.js gana en los cinco criterios por márgenes distintos. Estas son las razones concretas:
App Router y Server Components
Desde Next.js 14, el App Router con React Server Components ha cambiado la forma de construir aplicaciones. Podemos hacer fetching en el servidor sin exponer secretos ni añadir overhead al bundle del cliente. Para un SaaS con muchas vistas y datos, la diferencia en performance es real.
SEO listo de serie
Para SaaS con landing pública, blog o marketplace, el SEO técnico de Next.js es de los mejores del mercado: metadata API, sitemap y robots como código, imágenes optimizadas, streaming SSR. Nada de plugins que hay que mantener aparte.
Un solo runtime, muchas plataformas
El mismo proyecto se despliega en Vercel, AWS, Cloudflare, un VPS o un contenedor propio. Esto nos da libertad para adaptarnos a las restricciones del cliente sin migrar el código.
Por qué Node.js con Express en el backend
Node.js con Express sigue siendo, en 2026, la opción con mejor relación madurez/velocidad para APIs de un SaaS. Estas son las razones que más pesan en nuestras decisiones:
- Mismo lenguaje en todo el stack: TypeScript de punta a punta, sin cambiar de contexto mental entre frontend y backend.
- Ecosistema npm: la librería que necesitas (colas, workers, integraciones, SDKs de terceros) casi siempre ya existe y está mantenida.
- Async nativo con event loop: soporta cargas concurrentes altas sin arquitecturas complejas ni threads que gestionar a mano.
- Express es minimalista y predecible: middlewares explícitos, sin magia oculta, fácil de auditar y de depurar en producción.
- Curva de aprendizaje corta: cualquier desarrollador con experiencia en JavaScript/TypeScript es productivo en días.
Cómo se hablan Next.js y Node.js
La integración que usamos es simple y robusta. Express expone una API REST, con esquemas de validación en Zod compartidos entre frontend y backend cuando el monorepo lo permite. Next.js lo consume, casi siempre desde Server Actions o Route Handlers para no exponer tokens al cliente.
El resultado es tipado end-to-end: si cambias un tipo o un esquema de Zod, el compilador de TypeScript avisa en la UI antes de que llegue nada a producción. Ese loop cerrado ahorra muchísimos bugs.
Autenticación, pagos e IA
Un SaaS típico necesita autenticación, facturación e, cada vez más, IA. Este es el patrón que usamos:
- Autenticación: Auth.js en Next.js si es simple, o un servicio propio en Node.js/Express con JWT y refresh tokens si hay multi-tenant o roles complejos.
- Pagos: Stripe siempre en el backend (Express) por seguridad. El frontend solo maneja el checkout y confirmaciones.
- IA: llamadas a OpenAI, Anthropic o modelos propios desde Node.js, con streaming hacia Next.js vía Server-Sent Events.
- Almacenamiento: PostgreSQL como base principal, S3 para ficheros, Redis para caché y colas.
Coste real de operar este stack
Un SaaS pequeño a mediano con este stack corre cómodamente con:
- Next.js en Vercel Hobby/Pro o un VPS de 20-40 €/mes.
- Node.js/Express en un contenedor Fly.io/Railway/EC2 pequeño (20-60 €/mes).
- PostgreSQL gestionado (Neon, Supabase, RDS): desde 20 € hasta lo que necesites.
- Total mensual honesto para un SaaS con miles de usuarios: 100-300 €.
Escala sin sorpresas hasta el rango de decenas de miles de usuarios activos. A partir de ahí toca conversación de arquitectura, no cambio de stack.
Cuándo NO usamos este stack
Ningún stack es universal. Nos salimos de Next.js + Node.js cuando:
- El cliente tiene un equipo interno con expertise fuerte en otro lenguaje (Java, .NET, Python, Go): pesa más su continuidad que nuestra preferencia.
- El proyecto necesita librerías de IA o ciencia de datos que solo existen maduras en Python: ahí sí entra FastAPI.
- Hay procesamiento pesado en tiempo real (streaming de vídeo, trading): Go o Rust son mejores herramientas.
- Es un proyecto interno pequeño y aislado: a veces un Django completo o un Rails resuelve todo en menos código.
Conclusión
Next.js + Node.js no es una moda. Es el resultado de probar durante años distintas combinaciones y quedarnos con la que ofrece el mejor equilibrio entre velocidad de desarrollo, rendimiento y coste de mantenimiento para el tipo de SaaS que solemos construir.
Elegir un stack no es una decisión estética. Es un compromiso a cinco años con la persona que va a mantener ese código cuando tú ya no estés.
Si estás arrancando un SaaS y quieres una segunda opinión sobre tu stack, o si tienes un proyecto donde estas decisiones ya se tomaron y quieres una auditoría, hablemos.
