El compilador Rust de Astro 7 me cazó 2 bugs que llevaban meses en producción
pnpm build falló al minuto de instalar Astro 7.0.0. El error: un <section> abierto dos veces y un <div> sin cerrar en mi página de design system. Los dos llevaban meses en producción; el compilador de Go los autocorregía en silencio siguiendo la especificación HTML. El de Rust, que en la v7 es obligatorio, los rechaza de plano.
El diff completo de la migración#
</section>
- <section>
<section>
<h2 class="section-title">{t("design.sect.media")}</h2>
@@
</section>
+ </div>
</main>Eso fue todo el código que tocó la migración de 248 páginas. Dos líneas; el resto fue package.json y el lockfile.
Los 2 gotchas que el changelog no te grita#
Uso rehype-slug y rehype-autolink-headings, así que el nuevo procesador Markdown nativo (Sätteri) no me alcanzaba: tuve que instalar @astrojs/markdown-remark a mano y envolver los plugins con unified() en la config. Sin plugins, no hacés nada.
El segundo fue de pnpm, no de Astro. minimumReleaseAge bloquea paquetes recién publicados, y un major del mismo día no pasa el filtro:
minimumReleaseAgeExclude:
- astro@7.0.0
- "@astrojs/mdx@7.0.0"
- "@astrojs/vercel@11.0.0"Lo que no te va a romper#
Según la documentación oficial de migración, hay más breaking changes, pero ni las constantes removidas de astro:transitions ni el nombre reservado src/fetch.ts afectan a un sitio estático típico. Las optimizaciones que ya tenías, como las navegaciones instantáneas con Speculation Rules, siguen funcionando igual. Verificalo con grep antes de entrar en pánico.
Mi postura: un compilador que rechaza tu HTML inválido no es fricción, es una auditoría gratis. La Cerca de Chesterton funciona al revés acá; el permiso que nadie recordaba haber dado (autocorrección silenciosa) escondía deuda técnica real.
Este sitio presume de Lighthouse 100/100 y aun así tenía HTML inválido en producción. Ningún linter lo vio; lo vio un compilador nuevo.