Astro 7 新機能まとめ(自分用メモ)
Astro 7 が 2026年6月22日にリリースされました。Astro 6 の内部リファクタリングを経て、今回は速度に全振りしたリリースらしいです。後で見返せるように、新機能と破壊的変更を公式情報ベースで自分用にまとめておきます。
速度に全振り:ビルド 15〜61% 高速化
今回の主役はとにかく速度です。公式ベンチマークではビルド全体で 15〜61% 速くなっていて、docs.astro.build が 114.54s → 73.53s、astro.build が 62.70s → 24.24s と出ています。内訳は大きく4つ。
.astro コンパイラの Rust 移植
旧来の Go コンパイラが Rust に完全刷新されました。パースは oxc、CSS スコープは Lightning CSS が基盤になっています。
ただしコンパイラ単体での効果は限定的で、docs.astro.build で約6%の改善にとどまります。コンパイル自体がビルドのボトルネックになるケースは少ないので、ここは厳格化(後述の破壊的変更)とセットで捉えておいたほうがよさそうです。
新 Markdown パイプライン「Sätteri」
Astro コアチームの Erika 氏が作った Rust 製プロセッサ「Sätteri」が、旧来の unified(remark/rehype)ベースの JS パイプラインを置き換えます。CommonMark の解析に pulldown-cmark、MDX 式の解析に Oxc を使っていて、どちらもネイティブ Rust です。
GFM(テーブル・フットノート・打ち消し線・タスクリスト)が標準搭載になったのが地味に効きます。従来は別プラグインが必要だった部分がデフォルトで動きます。Markdown 多用サイトでビルドが1分以上短縮した例もあるとのこと。
NOTE旧来の unified パイプラインが必要なら
@astrojs/markdown-remark経由で従来プラグインを使い続けられます。
レンダリングのキューベース化
Astro 6 で実験的に入っていたキューベースレンダリングが、正式版かつデフォルトになりました。従来の再帰処理をキュー方式に置き換えたもので、子ノードの順序を保ちつつ ~2.4× 高速・メモリ消費も削減されます。
Vite 8 + Rolldown
Vite の数年ぶりの大型リリース Vite 8 に追従しました。目玉は Rolldown で、esbuild と Rollup を統合する Rust 製バンドラーです。ベンチマークでは Rollup 比で 10〜30倍速いとされています。Vite/Astro のプラグイン API 互換は維持されているので、既存プラグインは基本そのまま動きます。
ルートキャッシュが安定版に
Astro 6 で実験導入されていたルートキャッシュが正式版になりました。ページ内では Astro.cache、API ルートやミドルウェアでは context.cache から、プラットフォーム非依存でキャッシュを制御できます。標準 HTTP キャッシュセマンティクスに基づき、組み込みの memoryCache() プロバイダも標準搭載。routeRules でルート群ごとの宣言的設定、cache.invalidate() でタグやパス単位のパージもできます。
// レスポンスごとのキャッシュ制御の例maxAge: 120, // 2分キャッシュswr: 60, // 1分は stale を返しつつ裏で再検証tags: ['products'], // タグ単位の無効化用WARNINGホスティング先の CDN キャッシュに押し出すプロバイダ(Netlify / Vercel / Cloudflare)は、まだ全て experimental〜private beta 扱いです。安定版として頼るのは時期尚早。
Advanced Routing:src/fetch.ts
src/fetch.ts(または .js)という特殊ファイルで、src/middleware.ts と同じようにリクエストパイプライン全体を制御できるようになりました。Cloudflare Workers や Deno でおなじみの fetch ハンドラパターンで、認証などを Actions より先に走らせる、といった合成がしやすいです。
WARNING既存プロジェクトでこの名前のファイルを別用途に使っていると、Advanced Routing 用設定として誤認識されます。
fetchFileオプションで別名を指定するかnullで無効化、あるいはファイル名自体を変える(src/fetcher.ts等)対処が必要です。
AI コーディングエージェント対応
エージェントを自動検知して dev サーバーをバックグラウンド起動する仕組みが入りました。手動でも以下の CLI で操作できます。
astro dev --background— dev サーバーを管理されたバックグラウンドプロセスとして起動astro dev stop— 停止astro dev status— 状態確認astro dev logs— バックグラウンドサーバーのログ取得astro dev --json— 構造化 JSON ログ出力(機械可読フィードバック用)
加えて /_astro/status ヘルスエンドポイントで起動確認ができ、ロックファイルによって同一プロジェクトでの重複起動を防ぎます。エージェントを使っていなければ挙動は従来通りです。Claude Code や Codex で dev を回すときに楽になりそうな部分。
アップグレード時の破壊的変更
| 変更点 | 内容 |
|---|---|
| HTML 自動補正の廃止 | 新 Rust コンパイラは不正な HTML(<p> 内のブロック要素など)を補正せずそのまま通します。ブラウザ側の解釈に依存するため表示が変わる可能性 |
| 未閉じタグがエラーに | 従来サイレントに許容されていた未閉じタグや未終了の属性がビルドエラーになります |
compressHTML デフォルト変更 | true → 'jsx'。JSX の空白規則でインライン要素間の空白を除去するため、<span>hello</span><em>world</em> が helloworld(空白消失)になります。残すには {" "}、旧挙動に戻すには compressHTML: true を明示 |
@astrojs/db 削除 | メンテナンス終了。移行先は node:sqlite、Drizzle ORM の直接利用、または Turso / PlanetScale / Neon 等の外部 DB |
astro:transitions 内部 API 削除 | TRANSITION_* 定数や createAnimationScope() を削除。ライフサイクルイベント名を直接使う形に |
src/fetch.ts の予約名化 | Advanced Routing 用に予約。別用途で使っているなら fetchFile で別名/null 指定、または改名 |
まとめ:自分が気にする勘所
速度向上は素直に嬉しいです。特に Markdown 多用サイトの恩恵が大きいので、このブログ用途とは相性がよさそう。
アップグレードで一番刺さりそうなのは compressHTML の true → 'jsx' です。ボタン並びなどインライン要素間の空白に依存したデザインは、空白が消えていないか目視で確認したほうがいいです。HTML 自動補正の廃止と未閉じタグのエラー化もあるので、雑なマークアップに頼っている箇所はビルドが落ちる可能性があります。
@astrojs/db を使っていれば移行が必須ですが、このブログは未使用。あとは src/fetch.ts の予約名化くらいを押さえておけば、移行コスト自体は Rolldown のプラグイン互換のおかげで比較的低そうです。