Conocimientos previos

¿Qué es Next.js? Guía para principiantes

Por qué Next.js encaja con SaaS: enrutamiento, SSR/SSG y rutas API en un solo repositorio — guía completa y amigable para principiantes.

¿Qué es Next.js? Guía para principiantes

Next.js es un framework construido sobre React y Node.js que facilita el desarrollo de aplicaciones web modernas (visión general). En pocas palabras, Next.js ofrece una solución todo‑en‑uno para crear plataformas SaaS (Software as a Service) ricas combinando frontend y backend en un solo proyecto. Incluye características como enrutamiento integrado, renderizado del lado del servidor (SSR), generación estática (SSG) y rutas API listas para usar, para que puedas centrarte en la funcionalidad de tu app en lugar de la configuración base (por qué los devs usan Next.js). Esta combinación es exactamente la razón por la que Next.js se ha vuelto popular para apps SaaS: cargas rápidas, páginas amigables para SEO y endpoints de backend en un mismo código.


Lo que Next.js ofrece de fábrica

Una de las mayores ventajas de Next.js es cuánto entrega sin configuración. Algunas funciones clave que vienen por defecto:

Enrutamiento basado en archivos: No necesitas configurar un router aparte ni usar React Router: Next.js crea rutas automáticamente según tus archivos y carpetas (file‑based routing). Por ejemplo, un archivo pages/about.js se convierte en la página /about. Esta convención hace intuitiva la organización y elimina definir rutas manualmente.

Renderizado del lado del servidor (SSR): Next.js puede renderizar páginas en el servidor para cada petición, enviando HTML completo al cliente (conceptos SSR). Esto implica cargas iniciales más rápidas y mejor SEO, ya que los buscadores indexan tu contenido con facilidad. Después, React “hidrata” la página en el cliente para la interactividad.

Generación estática (SSG): Para páginas que no necesitan ser dinámicas en cada visita, Next.js puede preconstruirlas como archivos estáticos en build time (SSG). Estas páginas cargan extremadamente rápido (y también ayudan al SEO) porque se sirven desde un CDN/servidor sin renderizar en vivo en cada acceso. SSG es ideal para marketing, documentación o contenido que cambia poco.

Rutas API integradas: Next.js te permite crear endpoints de backend simplemente añadiendo archivos en un directorio api (API routes). Esos endpoints corren en Node.js (o funciones serverless) como parte de tu app. Puedes manejar envíos de formularios, consultas a base de datos, autenticación, etc., sin levantar un Express aparte: la API vive en el mismo proyecto que tu frontend. (Más abajo lo exploramos.)

División automática de código y optimizaciones: Next.js divide automáticamente tu bundle por página y optimiza assets (optimizaciones). Cada página carga solo el JS y CSS que necesita, en lugar de un bundle gigante. Resultado: cargas más rápidas y mejor rendimiento. Además, trae minificación, tree‑shaking e imagen optimizada listos. No tienes que configurar Webpack ni Babel: ya viene resuelto.

Experiencia de desarrollo sin configuración: Más allá de lo grande, Next.js soporta TypeScript out‑of‑the‑box, CSS y Sass integrados, e integra librerías populares (estado, estilos, data fetching, etc.) de forma fluida (DX). La idea es que puedas empezar a programar funcionalidades con mínima preparación.

En resumen, Next.js te da un framework React full‑stack. El trabajo pesado de enrutado, empaquetado y renderizado está resuelto, así que “solo tienes que escribir tus componentes de React” (debate). Gran victoria para devs de SaaS: construyes más rápido sabiendo que los fundamentos (carga veloz y SEO) ya están cubiertos.


Modelo de enrutamiento y layouts en Next.js

Next.js usa un sistema de enrutamiento basado en archivos que mapea tu estructura de carpetas a rutas. Cada archivo o carpeta en el directorio pages (o el nuevo app) se convierte automáticamente en una ruta. Por ejemplo, pages/user/settings/notifications.js genera la URL /user/settings/notifications. Este router integrado elimina configurar rutas a mano y mantiene la estructura de URLs alineada con tu proyecto.

Definir rutas en Next.js es tan simple como crear archivos. Organizas páginas por directorios y Next.js las convierte en URLs navegables. Esto cubre rutas dinámicas también — por ejemplo, un archivo [id].js en pages/posts/ se convierte en /posts/123 para una entrada con ID 123. Bajo el capó, Next.js maneja el linking y el code‑splitting, así que moverte entre páginas es ágil y sin recargar el sitio completo.

Next.js introduce además el concepto de layouts para secciones repetidas. En React tradicional, envolverías páginas con componentes de layout (cabecera, pie, sidebar). El nuevo App Router de Next.js 13 lo hace aún más fácil permitiendo layouts anidados a nivel de carpeta. Por ejemplo, app/dashboard/layout.js define la barra lateral y cabecera del dashboard — todas las páginas bajo /dashboard/* usarán ese layout automáticamente. Así mantienes una navegación consistente sin envolver cada página manualmente (layouts anidados). Suele usarse un layout para páginas públicas de marketing y otro para la interfaz del usuario autenticado.

En palabras simples, el enrutado y los layouts de Next.js te permiten crear apps multipágina sin dolor. Obtienes URLs limpias (buenas para UX y SEO) y puedes mantener elementos comunes fácilmente, sin librerías externas ni boilerplate — Next.js lo resuelve con convenciones.


Componentes de servidor vs componentes de cliente (en palabras sencillas)

Como principiante en Next.js (especialmente desde la versión 13), verás los términos Server Component y Client Component. Tienen que ver con dónde se renderiza el componente. En simple:

Los componentes de servidor son partes de tu app React que corren en el servidor (antes de que el navegador del usuario reciba nada). Renderizan su contenido a HTML en el servidor y lo envían al navegador. Importante: no se envía código JS de React de esos componentes al cliente (server vs client). Son muy rápidos y geniales para mostrar datos (pueden hacer fetch directamente en el servidor) o contenido sin interactividad. Piénsalo como un fragmento de UI “pre‑hecho” en el servidor. También es más seguro, porque los datos sensibles permanecen en el servidor. Eso sí, por sí solos no manejan interacciones (no hay onClick, ni actualizaciones dinámicas en el navegador) porque no incluyen JS de cliente.

Los componentes de cliente son los React “tradicionales” que corren en el navegador. Son necesarios para cualquier cosa interactiva: botones que abren modales, formularios, animaciones, etc. Incluyen JavaScript que se carga en el cliente (client components). Permiten interactividad rica, aunque aumentan el bundle y pueden hacer la carga inicial algo más lenta. En Next.js, marcas un componente como de cliente añadiendo la directiva "use client" al principio del archivo.

En la práctica, una página en Next.js mezcla ambos tipos: la estructura no interactiva puede ser de servidor (para velocidad y SEO) y widgets concretos, de cliente. Este enfoque híbrido te da lo mejor de ambos: rendimiento y posicionamiento, junto con dinamismo en el navegador. Por ejemplo, en un dashboard de SaaS, puedes renderizar la mayor parte del layout y datos con componentes de servidor, y usar un componente de cliente para un gráfico con zoom o un formulario interactivo.

Idea clave: Server Components = render en servidor (sin JS en cliente, buenos para contenido estático y velocidad). Client Components = render en navegador (necesarios para interactividad). Next.js usa por defecto componentes de servidor y haces opt‑in a cliente cuando hace falta. No necesitas dominar todos los detalles desde el inicio; basta con saber por qué Next.js te pide marcar algunos con "use client": para incluir en el navegador solo lo imprescindible.


Rutas API integradas: tu backend en el mismo repo

Una característica destacada de Next.js para SaaS son las rutas API. Normalmente, para construir un backend crearías un servidor aparte (p. ej., Express o Nest.js) para datos, formularios, auth, etc. Con Next.js, a menudo puedes saltarte ese paso: define endpoints junto a tus páginas.

En un proyecto Next.js, cualquier archivo bajo pages/api/ (Pages Router) o app/api/ (App Router) se convierte en un endpoint HTTP. Por ejemplo, crea pages/api/hello.js con:

// pages/api/hello.js
export default function handler(req, res) {
  res.status(200).json({ greeting: "Hello from Next API" });
}

Con la app en marcha, una petición a /api/hello ejecuta ese handler en el servidor y devuelve { "greeting": "Hello from Next API" } como JSON. Es potentísimo: tu frontend React y tu API viven en el mismo repo. Puedes crear endpoints para obtener usuario, guardar formularios o chequear salud, sin desplegar un servidor aparte. En plataformas como Vercel, estas rutas API se ejecutan como funciones serverless.

Las rutas API permiten levantar un SaaS sin backend separado en muchos casos. En fases iniciales, puedes tener páginas Next.js para la UI y rutas API para datos (hablando con una base de datos o servicios externos). Comparten código, config y tipos, acelerando el desarrollo. Y como corren en el servidor, puedes mantener secretos (API keys, credenciales) fuera del cliente.

Ten en cuenta que las rutas API no inflan tu bundle del cliente: el código en pages/api nunca se envía al navegador (server‑only). Solo corre en el servidor. Así obtienes backend sin cargar el frontend.

Un ejemplo concreto: imagina que quieres un endpoint de health check para tu SaaS. Crea api/health.js que devuelva { status: "ok" }. Al ejecutar tu app y visitar http://localhost:3000/api/health, verás ese JSON. De hecho, pruébalo: ejecuta pnpm dev y abre /api/health para ver una ruta API en acción. 🎉 Una forma rápida de confirmar que tu backend funciona sin necesitar un servidor aparte.

Por supuesto, a medida que crezca tu SaaS, integrarás bases de datos externas o lógica más compleja. Las rutas API pueden llamar a esas BDs o a APIs de terceros. Y si algún día superas lo integrado, siempre puedes montar un servicio dedicado. Para muchos equipos, las rutas API cubren un amplio abanico en apps pequeñas y medianas.


Trade‑offs: cuándo puede que no necesites Next.js

Con tantas funciones, quizá te preguntes: ¿es Next.js siempre la elección correcta? Es una gran herramienta, pero conviene conocer los trade‑offs y escenarios donde puede ser excesivo.

¿Es demasiado para proyectos simples? Si construyes un sitio extremadamente sencillo —una landing única o una web estática básica— Next.js puede sentirse más framework del que necesitas. Puede que no requieras SSR ni rutas API. En esos casos, un setup más simple (React + Vite, o HTML estático) puede bastar. Next.js añade curva de aprendizaje y pasos de build que un sitio puramente estático no necesita. Dicho esto, Next.js está pensado para escalar contigo. Aunque pueda parecer “overkill” para una sola página, no te perjudica usarlo —y si el sitio crece, agradecerás tener sus capacidades listas (¿overkill?).

¿Puedo construir un SaaS sin backend separado? Sí, y muchos lo hacen. Las rutas API integradas permiten que, en muchos SaaS, no necesites un servidor aparte al inicio. Tu app Next.js puede servir la UI y también JSON/formularios vía rutas API. Por ejemplo, el equipo de sushi-templates.com usa Next.js para todo (páginas de usuario y lógica backend en el mismo codebase). Es un enfoque que simplifica desarrollo y despliegue: despliegas una app y todo (UI + API) va sincronizado. Según respuestas en la comunidad, no hay nada malo en usar un backend separado si lo prefieres —puedes llamar APIs externas desde Next.js—, pero suele ser más fácil empezar con rutas API salvo que tu caso requiera lo contrario (¿backend separado?).

¿Cuándo quizá no necesites Next.js? Si tu app no necesita SSR para SEO ni te beneficias del enrutado por archivos y estás construyendo algo puramente del lado del cliente (una herramienta interna, un juego), podrías quedarte con React simple. Next.js aporta convenciones (que a veces son restricciones) y cierta sobrecarga (build, despliegue). Si ya tienes un backend completo y solo quieres un frontend 100% CSR, usar Next.js sigue siendo válido —pero algunos equipos optan por CRA o Vite + React si el SEO no importa y quieren total libertad. En esencia, Next.js brilla cuando quieres un framework full‑stack con opiniones; si tus necesidades son extremadamente simples o únicas, esas opiniones pueden estorbar.

En resumen, Next.js es una elección potente para la mayoría de apps web y, desde luego, para SaaS por su enfoque holístico. Puede ser “overkill” para una one‑pager estática, pero rara vez es una mala elección —y te deja listo para crecer. Y sí, puedes construir un SaaS sin backend separado con Next.js; muchas empresas e indie makers lo hacen, aprovechando su puente entre front y back en un mismo proyecto (por qué es un game‑changer).


Conclusión y próximos pasos

Next.js ofrece una forma potente y amigable para construir aplicaciones web. Agiliza el desarrollo con enrutado, optimizaciones de render y capacidades de backend desde el primer minuto. Si estás construyendo un SaaS, eso significa llevar tu idea a producción más rápido y con menos piezas móviles.

Si quieres probar Next.js, un buen primer paso es levantar el servidor de desarrollo y curiosear una de sus funciones. Si ya tienes un proyecto (puedes usar npx create-next-app@latest o una plantilla), arráncalo con pnpm dev. Abre http://localhost:3000/api/health (asumiendo que creaste la ruta api/health como se describió). Deberías ver una respuesta JSON. Esa acción confirma que tu app Next.js sirve frontend y backend juntos.

A partir de aquí, crea páginas y añade rutas API para ampliar tu SaaS. Usa enrutado por archivos para nuevas páginas, componentes de servidor para carga veloz y de cliente para interactividad. Next.js hará el trabajo pesado.

¡Feliz programación, y bienvenido al mundo Next.js! Donde tus habilidades con React llegan más lejos y construir un SaaS full‑stack es un placer en lugar de un dolor de cabeza.


Referencias