Astro 7 がリリースされた。.astro コンパイラを Rust で書き直し、Markdown と MDX も Rust パイプラインへ移行した。レンダリングはキュー方式に置き換え、Vite 8 の Rolldown と合わせてベンチマークではビルド時間が 15〜61% 短縮される。Advanced Routing、Route Caching の安定化、Netlify・Vercel・Cloudflare 向け CDN キャッシュプロバイダー(実験的)、コーディングエージェント向けのバックグラウンド dev サーバーと JSON ログも含む。

#移行・破壊的変更

  • Rust コンパイラが唯一の既定になった。未閉タグはエラーになり、HTML の自動補正は行われない
  • 空白処理の既定が compressHTML: 'jsx' に変わり、インライン要素間の改行空白は消える。旧挙動に戻す場合は compressHTML: true
  • Markdown 既定プロセッサが Sätteri に変更された。remark/rehype 依存は @astrojs/markdown-remarkunified() で従来パイプラインを維持できる
  • src/fetch.ts(または .js)が Advanced Routing 用の予約名になった。既存ファイルがある場合は fetchFile で別名指定するか null で無効化する
  • Astro 6 の実験フラグ(rustCompilerqueuedRenderingadvancedRoutingcachelogger 等)は削除され、既定またはトップレベル設定へ統合された
  • @astrojs/db 削除、astro:transitions の内部 API 削除、getContainerRenderer() は各統合の container-renderer エントリポイントへ移った
astro
<!-- compressHTML: 'jsx' 既定 — インライン要素間の改行空白が消える -->
<span>hello</span><em>world</em>
<!-- 明示空白: -->
<span>hello</span> <em>world</em>
javascript
import { defineConfig } from "astro/config";
import { unified } from "@astrojs/markdown-remark";

export default defineConfig({
  markdown: { processor: unified() },
  compressHTML: true, // 旧 HTML 空白圧縮に戻す場合
});
bash
npx @astrojs/upgrade

#パフォーマンスと Vite 8

ビルドは「ページを JS にバンドル → 疑似サーバーで HTML 生成」の 2 段である。Astro 7 は主に前者を Rust 化し、Queued Rendering で生成も高速化する。M4 Pro / 48GB 環境での計測例は次のとおり。

サイト変更前変更後
docs.astro.build(約 6,313 ページ)114.54s73.53s
astro.build(約 308 ページ)62.70s24.24s
developers.cloudflare.com(8,431 ページ)386.89s261.94s

Vite 8 は Rolldown を同梱し、多くのプロジェクトは設定変更なしで esbuild と Rollup を置き換える。カスタム Vite プラグインは Rollup 互換 API の範囲で継続利用が想定される。

#Advanced Routing と Route Caching

src/fetch.ts でリクエストパイプライン全体を制御できる。API プロキシや astro(state) へのフォールバック、astro/hono による Hono ミドルウェアチェーン(i18n、actions、pages 等)に対応する。

Route Caching は stable である。memoryCache() プロバイダー、Astro.cache.set()、タグ付き invalidation、ルートルールが利用可能である。Netlify・Vercel・Cloudflare 向け CDN キャッシュプロバイダーは実験的である。

javascript
import { defineConfig, memoryCache } from "astro/config";

export default defineConfig({
  cache: { provider: memoryCache() },
});

#AI 向け開発者体験

コーディングエージェントを検出し、astro dev --background で dev サーバーをバックグラウンド起動できる。astro dev --jsonlogger: logHandlers.json() で構造化ログを出力し、エージェントが機械可読なフィードバックを得やすくする。

#参考文献