nacs digital lab
Development

Por qué elegí Astro sobre Next.js para este sitio

Performance vs features: mi análisis honesto después de construir con ambos

3 min de lectura
Vista previa del video: Por qué elegí Astro sobre Next.js para este sitio

Ver video

Next.js es increíble. Lo he usado en decenas de proyectos. Pero para este sitio personal, elegí Astro. Y no fue una decisión fácil.

El contexto

Necesitaba un sitio simple:

  • Homepage personal
  • Blog/laboratorio de experimentos
  • Rápido, muy rápido
  • Fácil de mantener
  • SEO optimizado

Podría haber usado Next.js. Lo conozco bien, tengo componentes reutilizables, y es el “estándar de la industria”.

Pero tenía una pregunta incómoda: ¿realmente necesito todo ese JavaScript en el cliente para un sitio de contenido estático?

La comparación honesta

Lighthouse Scores

Next.js App Router (mi implementación anterior):

  • Performance: 78
  • FCP: 1.8s
  • LCP: 2.4s
  • Bundle size: 186KB (solo React)

Astro v5 (implementación actual):

  • Performance: 100
  • FCP: 0.4s
  • LCP: 0.6s
  • Bundle size: 4.68KB (solo ThemeToggle interactivo)

Diferencia brutal. Y estos son números reales, no marketing.

Developer Experience

Next.js gana en:

  • ✅ Ecosistema masivo
  • ✅ Herramientas de desarrollo maduras
  • ✅ Routing file-based familiar
  • ✅ API routes integradas
  • ✅ Más ejemplos y tutoriales

Astro gana en:

  • ✅ Velocidad de build (3x más rápido)
  • ✅ Simplicidad del mental model
  • ✅ Content Collections nativas
  • ✅ Menos configuración necesaria
  • ✅ Zero JS por defecto

Costos reales

Para un sitio estático simple:

Next.js:

  • Vercel Hobby: Gratis (pero con límites)
  • Edge Functions count hacia el límite
  • Rebuild en cada deploy (más lento)

Astro:

  • Deploy a cualquier hosting estático
  • Build súper rápido
  • Sin consumo de edge functions
  • Netlify/Vercel/Cloudflare: todos gratis

Cuándo usar cada uno

Usa Next.js si:

  • Necesitas SSR real (datos dinámicos por request)
  • Tu app es muy interactiva (dashboard, SaaS)
  • Necesitas API routes
  • Tu equipo ya domina React
  • Quieres Vercel analytics/features integradas

Usa Astro si:

  • Tu sitio es principalmente contenido
  • Performance es crítica
  • Quieres menos JavaScript
  • Tienes un blog, docs, o sitio marketing
  • Quieres usar múltiples frameworks (React + Vue + Svelte)

Lo que me sorprendió de Astro

1. Content Collections

En Next.js, tenía que usar gray-matter, remark, configurar MDX manualmente. En Astro:

const posts = await getCollection('lab');

Ya está. Type-safe, con schema validation incluido.

2. Islands Architecture

Solo el ThemeToggle tiene JavaScript. El resto es HTML estático. En Next.js, aunque uses SSG, sigues enviando el React runtime.

3. Build times

Next.js: ~45s Astro: ~4s

Para un sitio pequeño, la diferencia no parece mucho. Pero cuando iteras rápido, esos segundos importan.

Lo que extraño de Next.js

1. Image optimization: Astro tiene @astrojs/image pero no es tan pulido como next/image.

2. Middleware: Para cosas simples, los redirects de Astro funcionan. Para lógica compleja, extraño el middleware de Next.js.

3. Ecosistema: Muchas librerías asumen Next.js. Astro requiere más trabajo manual a veces.

Mi decisión final

Para este sitio, Astro fue la elección correcta:

  • 100 en Lighthouse sin optimización
  • Deploy en 30 segundos
  • Escribo markdown, Astro lo renderiza
  • Cero problemas de hidratación

Pero no reemplazaría Next.js en mis proyectos SaaS. Para dashboards interactivos, Next.js sigue siendo imbatible.

La lección

No existe “el mejor framework”. Existe el mejor framework para tu caso de uso.

Si tu sitio es 90% contenido y 10% interactividad, Astro te va a hacer muy feliz.

Si tu app es 90% interactividad y 10% contenido, Next.js es la mejor opción.

Para mi blog personal: Astro. Para mi producto SaaS: Next.js.

Ambos en mi stack, ambos con propósitos diferentes.

Recursos

Contenido Relacionado

Más experimentos de Development