Astro 7 vs 6: novedades y cómo migrar (Vite 8, Rust)
Esperaba otra pelea como la de v6 y fue un pnpm up y un café. Vite 8, compilador en Rust, render en cola: qué cambió de verdad y dónde te puede morder. →
Óscar Gallego
Ingeniero de Software

En este artículo
Respuesta corta: Astro 7 activa Vite 8 con Rolldown, un compilador de .astro nuevo en Rust y el render en cola, todo por defecto. Si tu proyecto en v6 está limpio (Content Layer, id en vez de slug, Zod 4), la actualización es casi solo subir versiones. Hay dos cosas que pueden morder: el compilador más estricto deja de arreglarte en silencio el HTML mal formado, y el Markdown pasa a Sätteri, así que si usas plugins de remark o rehype tienes que instalar @astrojs/markdown-remark a mano.
Hace dos meses actualicé esta web a Astro 6 y te conté la pelea: el ContentSchemaContainsSlugError que culpaba al fichero equivocado, el default de Zod que compilaba mintiendo, una tarde entera. Así que cuando salió Astro 7, me preparé para lo mismo. Café cargado, changelog abierto, la tarde reservada.
No hizo falta. pnpm up astro, build verde, 217 tests en verde, y el café me lo tomé celebrando de verdad. La diferencia entre v6 y v7 es la diferencia entre pagar deudas viejas y estrenar motor nuevo.
¿Qué trae Astro 7 de verdad?
Tres titulares, y los tres vienen activados por defecto:
- Vite 8, con Rolldown debajo: el bundler en Rust que sustituye a esbuild y a Rollup. Astro reclama builds entre un 15% y un 61% más rápidos, y algunos sitios más del doble. En sus benchmarks,
astro.buildpasó de 62 a 24 segundos. - Compilador en Rust: han reescrito de cero el compilador de
.astro, de Go a Rust. - Render en cola: lo que en v6 era un flag experimental ahora es estable y por defecto. Cambia el render recursivo por una cola y dicen que va unas 2,4 veces más rápido.
Por debajo hay más: el Markdown pasa a un procesador en Rust (Sätteri), el route caching se estabiliza con una API agnóstica (Astro.cache), aparece un entrypoint nuevo src/fetch.ts para controlar el pipeline de peticiones entero, y un par de cosas pensadas para agentes, como astro dev --background con detección de agente y logging en JSON.
| Astro 6 | Astro 7 | |
|---|---|---|
| Bundler | Vite con esbuild y Rollup | Vite 8 con Rolldown (Rust) |
Compilador de .astro | Go | Rust, reescrito de cero |
| Render | Recursivo; la cola era un flag experimental | En cola, estable y por defecto |
| Markdown | remark y rehype de serie | Sätteri (Rust); los plugins de remark o rehype piden @astrojs/markdown-remark |
| HTML mal formado | El compilador lo corregía en silencio | Ya no lo corrige |
| Salto de línea entre elementos inline | Se renderiza como espacio | Reglas de JSX: no hay espacio |
| Route caching | Experimental | Estable, con Astro.cache |
¿Cómo migrar de Astro 6 a 7?
Si tu v6 está limpio, son tres comandos. Estos son los míos, con el adaptador de Vercel:
pnpm up --latest astro @astrojs/vercel # en mi caso, 6.4.6 → 7.0.3 y el adaptador de 10 a 11
pnpm add @astrojs/markdown-remark # solo si usas plugins de remark o rehype
pnpm astro check && pnpm build && pnpm test
Antes de lanzarlos, mira dos cosas: que no te quede ningún flag experimental de v6 en astro.config.mjs y que tus plantillas cierren todas las etiquetas. Lo primero lo cuenta la guía oficial de actualización; lo segundo es el filo del compilador nuevo, que te explico más abajo.
Por qué a mí no me dolió
Mi diff entero fueron dos cosas: subir versiones y arreglar dos tests. Ningún flag experimental que quitar, ningún src/fetch.ts que escribir, ningún truco interno de astro:transitions, nada de @astrojs/db. Astro 6.4.6 a 7.0.3, y de paso @astrojs/vercel de 10 a 11 y TypeScript de 5.9 a 6.0. El único cambio en mi propio código fue actualizar aserciones en dos ficheros de tests unitarios para que asertaran las URLs con barra final. 217 tests en verde y a otra cosa.
La razón de fondo es la moraleja del post de v6 al revés. v6 ya me había hecho pagar todas las deudas: el Content Layer, el id en vez de slug, los defaults de Zod 4. v7 no te quita ninguna muleta, solo añade velocidad. Si tu v6 está limpio, v7 te sale gratis.
La parte honesta: dónde sí puede morder
No todo es de coña, y el compilador nuevo tiene un filo.
El de Rust es más estricto que el viejo de Go. Ya no te autocorrige el HTML: no reordena etiquetas ni te cierra los tags que dejaste abiertos, y el whitespace pasa a seguir las reglas de JSX, así que un salto de línea entre dos elementos inline ya no se renderiza como un espacio. A mí no me rompió nada porque mis plantillas ya estaban bien cerradas. Pero si arrastras HTML chapucero que aguantaba porque Astro te lo apañaba por detrás, ahí es donde v7 te va a soltar errores que v6 se tragaba sin rechistar.
Y mordió una semana después. Las versiones 7.0.4 a 7.0.6 rompieron el prerender estático de mis endpoints [slug].md.ts con trailingSlash: "always" (“Missing parameter: slug”), así que fijé la 7.0.3, renombré los endpoints a [slug].ts e instalé @astrojs/markdown-remark a mano para mis plugins de remark. No fue una pelea, pero tampoco gratis.
Y un asterisco sobre los números: ese “15-61% más rápido” es el benchmark de ellos, no el mío. No cronometré el build antes de actualizar, así que no te puedo dar la diferencia. Lo que sí firmo: hoy, en la 7.3.3 y con un M2 Max, astro build saca las 43 páginas de esta web en unos 5 segundos con la caché caliente.
La moraleja, comparada con v6
Las migraciones que duelen son las que pagan deudas viejas, no las que estrenan motores nuevos. Haz el trabajo aburrido a tiempo (el de v5, el de v6) y el salto a v7 es lo que toda actualización promete y casi ninguna cumple: un pnpm up y un café que, esta vez sí, te tomas tranquilo.
Lectura relacionada: si vienes de más atrás, la actualización que de verdad cuesta es la de Astro 5 a 6, con el cambio de slug a id y los defaults de Zod 4 que te explican por qué v7 fue tan suave. ¿Saltas directamente desde v5 y los campos del schema desaparecen? Mira primero dónde está tu content.config.ts.
Fuentes
- Astro, anuncio de Astro 7.0 (Vite 8, compilador en Rust, render en cola, números de build).
- Docs de Astro: Upgrade to v7.
P.D. ¿Ya saltaste a v7? ¿El compilador en Rust te cazó algún HTML chapucero que llevaba años colándose? Cuéntamelo en Twitter/X.
Última actualización:
Artículos relacionados


Astro 6 en 2026: ~100 en Lighthouse y una fracción del JS
