Astro 7.0 リリースノート / 新機能

Astro 7.0 リリースノート / 新機能

Astro 7.0 は、特に大規模サイト向けのビルド速度に焦点を当て、パフォーマンスの大幅な向上と開発者体験の改善を目指しています。コアコンポーネントを Rust で書き直し、Vite 8 と Rolldown バンドラを統合することで、ビルド時間を 15%〜61% 短縮しています。

ビルドパフォーマンスと Rust 統合

Astro 7 では、ビルドプロセスで最も計算コストの高い部分をネイティブ Rust コードに移行することで、ビルド時間が大幅に短縮されました。MacBook Pro M4 Pro でのベンチマークでは、一部のサイトでビルドが 2 倍以上速くなり、Astro のドキュメントサイトのビルド時間は 114.54 秒から 73.53 秒へと減少しています。

Rust ベースの .astro コンパイラ

.astro コンポーネントコンパイラは完全に Rust で書き直され、従来の Go ベース実装に取って代わりました。この変更により、マークアップの取り扱いにいくつかの重要な変化が導入されます:

  • HTML 補正の削除: コンパイラはもはや「有効な HTML」になるようにマークアップを黙って書き換えません。タグの自動クローズや要素の並び替えは行われません。
  • JSX スタイルの厳格さ: 未閉じタグや属性の終端がない場合はエラーとなり、黙って修正されなくなります。
  • 空白文字の取り扱い: 要素間の空白は JSX の慣例に従って折りたたまれます。スペースを保持したい場合は {' '} のような明示的な式が必要です。

Sätteri: Rust パワード Markdown と MDX

Astro 7 はデフォルトの Markdown/MDX パイプラインを Sätteri に置き換えました。Sätteri は Rust で動作するプロセッサで、JavaScript ベースの unified パイプライン(remark/rehype)のオーバーヘッドを排除します。Markdown が多用されるサイトでの主なボトルネックであったこの部分が解消されます。Sätteri には、従来プラグインで実現していた機能が組み込みで提供されます:

  • GFM(テーブル、脚注、タスクリスト)
  • スマート句読点と見出し ID
  • コンテナディレクティブと数式
  • Frontmatter(YAML、TOML)、上付き/下付き文字、Wikilinks

remarkrehype の特定プラグインが必要なプロジェクト向けには、@astrojs/markdown-remark を通じて unified ベースのパイプラインが引き続き利用可能です。

安定したキューイングレンダリング

キューイングレンダリングが安定化し、デフォルトエンジンとなりました。式が多いページで約 2.4 倍の高速化が期待できます。従来の再帰的レンダリング方式とは異なり、新エンジンはキュー/スタックと単一ループでノードをレンダリングし、メモリ使用量を削減しつつ実行速度を向上させます。

Vite 8 と Rolldown

Astro 7 は Vite 8 にアップグレードし、Rust 製バンドラの Rolldown を導入しました。Rolldown は esbuild と Rollup の両方に代わるもので、Rollup と互換性がありながら 10〜30 倍速いと報告されています。ほとんどの Astro プロジェクトは設定変更なしでビルドが高速化されます。これは esbuildrollupOptions の設定を自動変換する互換レイヤーのおかげです。

高度なルーティングとリクエスト制御

Astro 7 では src/fetch.ts エントリーポイントが追加され、開発者はリクエストパイプライン全体を自由に制御できます。これにより、認証や API プロキシなどのカスタムロジックを Astro の内部ルーティングに到達する前に実装できます。

この API は Hono と互換性があり、Hono のミドルウェアを使ってリクエストパイプラインを構成できます。たとえば、認証ミドルウェアを Astro Actions の前に必ず実行させたり、ページレンダリングだけをタイミングミドルウェアでラップしたりできます。

ルートキャッシュと CDN 統合

ルートキャッシュが安定化し、Astro.cache または設定ファイルの宣言的 routeRules を通じてオンデマンドレンダリングレスポンスを制御するプラットフォーム非依存の API が提供されます。

CDN キャッシュプロバイダー

Astro 7 は Netlify、Vercel、Cloudflare 向けの実験的 CDN プロバイダーを導入しました。これらのプロバイダーはキャッシュ指示子をホスト側のエッジネットワークへ直接プッシュし、サーバー関数を呼び出さずにキャッシュヒットで応答できるようにします。設定はアダプターの /cache エントリーポイント(例: cacheNetlify(), cacheVercel(), cacheCloudflare())で行います。

AI アシスト開発機能強化

Astro 7 は AI コーディングエージェントが開発サーバーとやり取りしやすくなるよう、特化した機能を追加しました。

バックグラウンド Dev Server

長時間実行されるプロセスで AI エージェントがハングしないよう、astro dev --background が追加されました。このモードはサーバーを管理されたバックグラウンドプロセスとして起動し、ロックファイルで重複インスタンスを防止します。Astro は AI エージェント内で実行されていることを自動検知し、デフォルトでこのモードを有効にします。エージェントは astro dev stopastro dev statusastro dev logs でサーバーを管理でき、/_astro/status エンドポイントでヘルスチェックが可能です。

構造化 JSON ロギング

JSON ロギングは astro dev --json または logHandlers.json() 設定で利用できるようになりました。機械可読なログは AI エージェントや本番環境のログ集約サービス(例: Kibana、CloudWatch、Grafana/Loki)に必須で、従来の人間向けフォーマット出力に代わります。

Sources