Вышел Astro 7 — релиз, целиком заточенный на скорость. Главный движок — переписанный на Rust компилятор .astro вместо старого на Go. Обработка Markdown и MDX тоже переехала на Rust через новый процессор Sätteri от участницы ядра команды Эрики. В паре с Vite 8, который принёс Rolldown — единый Rust-бандлер, заменяющий esbuild и Rollup и работающий в 10–30 раз быстрее — сборки ускорились на 15–61%. В тестах на MacBook Pro M4 Pro с 48 ГБ памяти некоторые сайты собирались более чем в два раза быстрее.
Новый компилятор строже старого: больше не исправляет HTML, не закрывает теги и не переставляет узлы за вас. Незакрытый <div>Hello или атрибут без кавычек теперь выдают ошибку. Пробелы между элементами схлопываются по правилам JSX — если нужен пробел, ставьте явно. Компилятор поставляется в нативных бинарниках с WASM-запасным вариантом и использует oxc для парсинга и Lightning CSS для scoping.
Sätteri заменил цепочку unified (remark/rehype) и при установке на документацию Astro и Cloudflare срезал больше минуты со времени сборки. Из коробки умеет GFM, умные кавычки, ID заголовков, директивы контейнеров, математику, фронтматер, над/подстрочные символы и вики-ссылки. Работает через плагины, которые ходят только по нужным типам узлов, а не по всему дереву. Если вам жизненно нужны старые remark-плагины, оставлен @astrojs/markdown-remark.
Рендеринг переведён на очередь (queued rendering) — стабильный и дефолтный с этой версии. Вместо рекурсивного обхода с вложенными вызовами теперь один цикл: очередь заполняется, рендерится и сбрасывается на ходу, что даёт прирост около 2.4×. Меньше памяти, быстрее работа.
Появилась сложная маршрутизация через src/fetch.ts. Файл экспортирует стандартный fetch-обработчик в духе Cloudflare Workers или Bun. Можно заворачивать запросы к API на бэкенд, подключать Hono-мидлвары, расставлять аутентификацию до Actions, а логирование — только на рендеринг страниц. Если файла нет — поведение Astro не меняется.
Кеширование маршрутов (route caching) наконец-то стабильно. Один универсальный API: ставите провайдер (например, memoryCache() из коробки), указываете maxAge, swr и теги, а Astro сам раздаёт кешированные ответы. Можно инвалидировать по тегу или пути — например, через вебхук от CMS. Для продакшена добавлены экспериментальные CDN-провайдеры для Netlify, Vercel и Cloudflare (последний в приватной бете), которые выгружают кеш прямо на границу сети.
Для AI-агентов сделали фоновый dev-сервер (astro dev --background): запускается, показывает PID и URL, отваливается, не блокируя терминал. Лок-файл не даёт запустить второй экземпляр. Есть здоровый эндпоинт /_astro/status и команды astro dev status / astro dev stop / astro dev logs. Логи можно переключить в JSON — для Kibana, CloudWatch, Grafana или тех же агентов. Менеджер логов настраивается через compose(), чтобы одновременно писать красиво в консоль и структурированно для машин.