De WordPress a Astro 6: 5 Errores que Nos Costaron 5 Días Extra en una Migración de 2,500 Páginas
webdevelopment 23 de julio de 2026 · Mintec

De WordPress a Astro 6: 5 Errores que Nos Costaron 5 Días Extra en una Migración de 2,500 Páginas

Migrar 2,500+ páginas de WordPress a Astro 6 en tres idiomas nos tomó 8 días solo para el contenido, no 3 como presupuestamos. Estos son los 5 errores específicos que cometimos, el costo real de cada uno, y el marco de decisión que ahora usamos para no repetirlos.

De WordPress a Astro 6: 5 Errores que Nos Costaron 5 Días Extra en una Migración de 2,500 Páginas

Migrar un sitio editorial de WordPress a Astro 6 suena simple en teoría: exportas el contenido, lo estructuras en JSON y builds el frontend. En la práctica, la migración de contenido tomó 8 días hábiles — 5 más de los 3 que presupuestamos. Este artículo documenta cada error, cuánto nos costó en tiempo real, y el marco de decisión que ahora usamos para que no te pase lo mismo.

El proyecto era un portal editorial con 2,500+ páginas en 3 idiomas, operando sobre WordPress con un theme pesado, plugins de caching, y un editor de Gutenberg lleno de bloques personalizados que el cliente había acumulado durante 5 años. El objetivo: migrar a Astro 6 + Cloudflare Pages para mejorar rendimiento y costos de hosting.

Las métricas finales justificaron la migración: TTFB de 680ms (servidor en Miami) a 98ms (edge de Cloudflare en Panamá), Lighthouse de 38 a 97, y LCP de 4.2s a 1.8s. Pero el camino estuvo lleno de errores que cualquier equipo que planee una migración similar debería conocer.

Error #1: Subestimamos la Transformación de Bloques Gutenberg (5 días perdidos)

El error más costoso. Presupuestamos 3 días para migrar 2,500+ páginas de contenido. Nos tomó 8.

WordPress almacena el contenido como bloques de Gutenberg en serialized HTML dentro de wp_posts.post_content. Astro 6 usa Content Collections con schemas de Zod 4 — archivos planos en JSON, YAML o Markdoc. Suena como una transformación directa, pero la realidad es más compleja:

  • YouTube embeds personalizados: El cliente había desarrollado un bloque propio de YouTube con parámetros de tracking, timestamp y thumbnail personalizado. No existía un parser que entendiera ese bloque → tuvimos que escribir uno.
  • Tablas complejas con estilos inline: Gutenberg permite tablas con anchos de columna, colores de fondo y alineación. Todo eso se pierde al extraer HTML plano.
  • Acordeones y pestañas: Bloques de interfaz que en WordPress funcionaban con JavaScript de terceros. En Astro no hay equivalente directo → hubo que reconstruirlos como componentes de isla.
Tipo de contenidoVolumenTiempo realLo que aprendimos
Artículos estándar (párrafos, imágenes, headings)~1,800 páginas1 díaScript de exportación funciona bien
YouTube embeds personalizados~400 páginas2.5 díasRequiere parser dedicado por bloque
Tablas complejas~200 páginas2 díasCada tabla necesita revisión manual
Acordeones y pestañas~100 páginas1.5 díasReconstrucción como islas de Astro
Galerías de imágenes~50 páginas1 díaEl pipeline automático de imágenes resolvió bien

Lección: Agenda una semana completa para el mapeo y transformación de contenido antes de escribir una línea de frontend. Los schemas de Zod son lo primero que debes definir — no lo último.

Error #2: No Validamos el Schema de Zod Antes de Exportar

Comenzamos a escribir el export script sin tener los schemas de Zod completamente definidos. Esto significó que el script generaba JSON que después no pasaba la validación de Astro, y tuvimos que re-exportar varias veces.

El schema de Zod 4 (Astro 6 migró de Zod 3 a Zod 4) es más estricto que el anterior. Por ejemplo:

import { z, defineCollection } from 'astro:content';

const blogCollection = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    description: z.string().max(160),
    pubDate: z.date(),
    author: z.string(),
    image: z.string().optional(),
    tags: z.array(z.string()).optional(),
    category: z.enum(['marketing', 'webdevelopment', 'automation', 'media']),
  })
});

Cada campo faltante, tipo incorrecto o categoría inválida en el JSON exportado causaba un error de build. Con 2,500+ páginas, iterar sobre estos errores consumió medio día que pudimos haber evitado.

Lección: Define y congela los schemas de Zod antes de escribir CUALQUIER script de exportación. Invierte el flujo: schema primero, export después.

Error #3: Ignoramos el Costo de las Live Collections en Tráfico Alto

Astro 6 introdujo Live Collections como una alternativa dinámica a las Static Collections — contenido que se actualiza sin rebuild completo. Las usamos para la homepage y las secciones destacadas, ya que el cliente publica contenido nuevo varias veces al día.

Pero Live Collections no son gratis. En un pico de 50,000 visitas en una hora (cubrimos un evento en vivo), el servidor de Live Collections se saturó. La solución fue agregar Redis cache (TTL 60s) frente a las Live Collections, a un costo de ~$15/mes.

El problema no fue el costo — fue que no lo anticipamos en el diseño de arquitectura. Si lo hubiéramos hecho desde el día 1, habríamos ahorrado el tiempo de implementar el cache después del pico.

EstrategiaFull BuildTiempo de respuestaCaché requeridaCosto adicional
100% Static Collections4 min 12s98ms edgeNo$0
Static + Live Collections4 min 12s98ms (cached) / ~300ms (live)Redis (TTL 60s)~$15/mes
Full SSR (WordPress original)N/A680ms (origin Miami)Plugin de caché~$200/mes hosting

Lección: Si usas Live Collections para contenido que puede recibir picos de tráfico, presupuesta Redis cache desde la arquitectura inicial. Asume que cualquier página en Live Collections tendrá al menos un pico de 10x el tráfico normal.

Error #4: Dejamos el Pipeline de Imágenes para el Final

WordPress genera múltiples tamaños de imagen automáticamente al subir un archivo. Astro 6 con @astrojs/image puede hacer lo mismo, pero requiere configurar las variantes manualmente.

En nuestro caso, pospusimos la configuración del pipeline de imágenes pensando que era un detalle menor. Resultó ser la optimización individual de mayor impacto: las imágenes que los editores subían como PNGs de 5MB se servían como AVIF de 40-120KB — una reducción del 97-99%. Pero configurarlo requirió:

  1. Definir 5 variantes por imagen (AVIF, WebP, JPEG en 2 tamaños cada una)
  2. Configurar CDN externo para servir las variantes
  3. Escribir guía para los editores sobre formatos de subida

Lección: El pipeline de imágenes debe ser lo SEGUNDO que configures después de los schemas de Zod. Es la optimización con mejor relación impacto/esfuerzo. Recomendamos AVIF como formato por defecto, WebP como fallback, y un tamaño máximo de 1920px para hero images.

Referencia: Cómo migramos de JPEG a AVIF en Astro: el ahorro real de ancho de banda.

Error #5: No Preparamos al Equipo Editorial para el Cambio de Flujo

La transición de Gutenberg (editor visual) a archivos Markdoc/JSON no es solo técnica — es cultural. Los editores estaban acostumbrados a arrastrar bloques, ver previews visuales y publicar con un clic.

En Astro 6, el contenido se escribe en archivos planos, se versiona con git, y se despliega mediante CI/CD. Para un equipo editorial que nunca usó línea de comandos, el cambio fue traumático. Tuvimos que:

  • Construir un dashboard personalizado para que pudieran seguir publicando sin tocar terminal
  • Escribir documentación detallada del flujo editorial en Astro
  • Hacer sesiones de capacitación de 2 horas cada una durante 3 días

Lección: El change management para el equipo editorial toma tanto como la migración técnica. No asumas que porque el frontend es mejor, el equipo lo va a adoptar. Invierte en UI editorial y capacitación desde el inicio.

Marco de Decisión: ¿Tu Sitio Debe Migrar de WordPress a Astro 6?

Basado en esta experiencia y otros 3 proyectos similares, desarrollamos este marco de decisión:

Perfil de proyectoRecomendaciónPor qué
Blog personal o sitio pequeño (<100 páginas, 1 idioma)WordPress con hosting gestionadoLa migración no justifica el esfuerzo
Sitio editorial (500-5,000 páginas, 1-3 idiomas)✅ Migrar a Astro 6Las ganancias de rendimiento y costo de hosting son significativas
E-commerce con catálogo grandeAstro + Shopify (híbrido)Combinar Static Collections para blog + Live Collections para productos
Portal con personalización por usuarioNext.js o Remix para secciones interactivasUsar Astro para páginas públicas, otro framework para las interactivas
Sitio institucional (<50 páginas)Astro + Cloudflare Pages desde 0No hay migración — construir directamente en Astro es más rápido

Resultados Finales y Métricas Comparativas

MétricaWordPress (Miami server)Astro 6 + CloudflareMejora
TTFB (LatAm)680ms98ms (edge Panamá)6.9x más rápido
Lighthouse mobile3897+59 puntos
LCP mobile4.2s1.8s2.3x más rápido
Full build (2,500+ páginas)N/A4 min 12s
Build incremental (10-15 artículos)N/A8-15s
Costo mensual hosting~$200 (WP Engine)~$15 (Cloudflare + Redis)92% menos

El sitio pasó de tener un TTFB de 680ms desde servidores en Miami a 98ms servido desde el edge de Cloudflare en Panamá — una diferencia que los usuarios de Latinoamérica, que constituían el 70% de la audiencia, notaron de inmediato.

Lo Que Haríamos Diferente

Si pudiéramos hacer esta migración de nuevo, con el conocimiento actual:

  1. Dedicar una semana completa al modelado de contenido con Zod antes de escribir código. La migración de datos siempre toma más de lo esperado, y tener los schemas correctos desde el día 1 ahorra iteraciones.
  2. Pipeline de imágenes como prioridad #2. No como un detalle para después. La optimización de imágenes fue el mayor impacto individual en rendimiento.
  3. Redis cache desde el día 1 para Live Collections. No esperar a que ocurra el primer pico de tráfico.
  4. Capacitación editorial paralela a la migración técnica. No secuencial. El equipo editorial debería estar listo para publicar el día del lanzamiento.
  5. Presupuestar 2x el tiempo de migración de contenido para cualquier proyecto con bloques personalizados de Gutenberg. Si el cliente tiene más de 3 tipos de bloques custom, asume que cada uno requerirá un parser dedicado.

Si estás evaluando una migración similar, te recomendamos leer también nuestro análisis de arquitectura multilingüe con Astro vs Next.js y cómo Astro maneja contenido multimedia pesado — ambos contienen datos de producción que complementan este caso de estudio.

Preguntas Frecuentes

¿Vale la pena migrar de WordPress a Astro 6 en 2026?

Depende del perfil del sitio. Para sitios editoriales con más de 500 páginas que priorizan rendimiento y alcance global, sí. Vimos mejoras de TTFB de 680ms a 98ms y Lighthouse de 38 a 97. Pero la migración de contenido toma más tiempo del que parece — y los bloques complejos de Gutenberg no se traducen automáticamente.

¿Cuánto tiempo toma migrar un sitio editorial grande de WordPress a Astro?

En nuestra experiencia con 2,500+ páginas y 3 idiomas, la migración del contenido tomó 8 días hábiles (presupuestamos 3). La mayor parte del tiempo se fue en transformar bloques de Gutenberg — especialmente YouTube embeds personalizados, tablas complejas y acordeones — a JSON plano compatible con Astro Content Collections.

¿Astro 6 puede igualar la facilidad de publicación de WordPress para equipos editoriales?

Sí, con la configuración adecuada. Astro 6 con Live Collections y Redis cache (TTL 60s, ~$15/mo) manejó picos de 50K visitas en una hora sin problemas. La diferencia es que el equipo editorial escribe en JSON/Markdoc en vez del editor visual de Gutenberg — requiere capacitación pero elimina el bloat de CSS/JS de WordPress.

Artículos Relacionados