Si estás leyendo esto en albertorrg.dev, ya estás viendo Astro 7 en acción. Hace unas horas esta misma plataforma corría sobre Astro 6, y la acabo de migrar a la versión 7, que salió el 22 de junio de 2026. Te cuento cómo me fue, porque para ser un salto de versión mayor me sorprendió lo poco que tuve que tocar.
No es un post de "leí el changelog". Es lo que pasó cuando me senté a actualizar mi propio sitio, con los números reales de mi build y la piedra con la que me tropecé en el camino.
Por qué me metí con esto
Este sitio es mi laboratorio. Lo uso justamente para probar cosas nuevas en algo que me importa y que está en producción de verdad, no en un proyecto de juguete. Cuando salió Astro 7 quise verlo corriendo acá antes de recomendarlo en cualquier lado. La regla que me pongo siempre es la misma: si lo voy a sugerir, primero lo rompo en mi propia casa.
Lo grande: Vite 8 y Rolldown
La novedad central de Astro 7 es que ahora se apoya en Vite 8, y Vite 8 trae Rolldown, un bundler nuevo escrito en Rust que reemplaza a la dupla de siempre (esbuild para desarrollo, Rollup para producción). La idea es tener un solo motor, rápido y consistente, para las dos etapas.
Después de actualizar, me fui a mirar qué quedó instalado de verdad y ahí estaba:
astro 7.0.3
vite 8.1.0
rolldown 1.1.3
tailwindcss 4.3.1Lo de Rust no es marketing: el compilador de .astro y el procesamiento de contenido también se movieron a Rust. En un sitio como este, que es estático y genera todo el HTML en build time, eso se siente directo en los tiempos.
La migración en sí: un cambio de número
Acá viene lo que más me gustó. Abrí el package.json preparado para una tarde de romper y arreglar, y al final el cambio de fondo fue este:
"dependencies": {
- "astro": "6.3.8",
+ "astro": "7.0.3",
},
"devDependencies": {
- "@tailwindcss/vite": "4.3.0",
- "tailwindcss": "4.3.0"
+ "@tailwindcss/vite": "4.3.1",
+ "tailwindcss": "4.3.1"
}Mi astro.config.mjs no necesitó ni una línea nueva. Astro 7 vuelve estables por defecto varias cosas que antes eran flags experimentales (el compilador en Rust, el renderizado por colas, el routing avanzado), así que si las venías activando a mano tocaba sacarlas del config. Yo no las tenía encendidas, así que mi config quedó intacto:
export default defineConfig({
site: 'https://albertorrg.dev',
output: 'static',
trailingSlash: 'always',
// i18n, integraciones, tailwind... todo igual que en Astro 6
});Cero migración de configuración. En una versión mayor, eso para mí es lo mejor que te puede pasar.
Lo que validé antes de publicar
No me gusta deployar a fe. Antes de tocar producción corrí el chequeo de tipos y un build completo en local:
astro check # 0 errores, 0 warnings
astro build # 20 páginas generadasEl astro check pasó limpio sin que tuviera que ajustar tipos. Y el build de producción me generó las 20 páginas del sitio (las dos home, el blog en español e inglés, cada artículo, los RSS y el sitemap) en alrededor de 3 segundos. Después abrí el sitio con Astro 7 al lado del de Astro 6 y los comparé sección por sección: idénticos. Esa era la parte que más me importaba, porque una cosa es que compile y otra es que se vea igual.
El deploy: un git push y a otra cosa
Este sitio se despliega solo. Yo no entro al servidor a copiar archivos: hago git push a main y de ahí se encarga el pipeline, que en mi propia máquina de producción hace el pull, reconstruye los contenedores con Docker y levanta todo de nuevo con su healthcheck. Así que "publicar Astro 7" fue literalmente un commit con dos archivos y empujar.
Para confirmar que de verdad había quedado, lo más simple del mundo:
curl -s https://albertorrg.dev/ | grep generator
# name="generator" content="Astro v7.0.3"Ese Astro v7.0.3 saliendo del sitio en vivo fue mi señal de que estábamos del otro lado.
La piedra del camino (que no fue culpa de Astro)
No todo fue de manual, pero el problema lo puse yo, no Astro. Tengo el repo en un disco con sistema de archivos NTFS, y cuando el gestor de paquetes intentó armar las dependencias ahí, el store quedó en ese disco y la instalación se arrastraba: no podía enlazar archivos entre discos distintos y terminaba copiando todo a mano, lentísimo.
La solución fue mandar el store a un volumen en el disco bueno, y ahí la instalación pasó de no terminar nunca a resolverse en segundos. Lo dejo escrito por si a alguien le pasa lo mismo: cuando un install se vuelve eterno, mirá en qué disco está cayendo el store antes de culpar a la herramienta.
¿Vale la pena actualizar?
En mi caso, sin dudarlo. Builds más rápidos por el cambio a Rust, cero deuda de configuración y un sitio que quedó exactamente igual de cómo se veía. Es el tipo de actualización que querés: te llevás la mejora de rendimiento sin pagar un peaje de reescribir medio proyecto.
Si tenés un sitio en Astro 6 razonablemente estándar, mi recomendación es que lo pruebes en local, corras tu check y tu build, compares un par de pantallas y le des para adelante. A mí me tomó menos de lo que esperaba, y ya lo tengo corriendo donde más me importa: acá mismo.