30秒で判断
- 対応すべき人: Astro を使い、MDX内で
<script>/<style>に動的な値(変数)を渡しているプロジェクトの開発者 - 対応不要な人: Astro を使っていない、またはMDXで
<script>/<style>に動的値を渡していない人 - 確認コマンド:
npx astro --version/npm ls astro
この変更が意味すること
Astro 7.3.2 は、MDX内の <script> / <style> レンダリングを厳格化するパッチリリースです。これまで <script>{value}</script> のように動的な値を子要素として渡すと、その値が生のマークアップとして出力されていました。7.3.2 からは、リテラル(remark/rehype プラグインが注入した内容を含む)のみが信頼済みマークアップとして扱われ、動的な値は他の要素の内容と同様にエスケープされます。
これはクロスサイトスクリプティング(XSS)を防ぐためのセキュリティ寄りの変更です。一方で、意図的に動的値を生のまま埋め込んでいた場合は挙動が変わるため、その場合は set:html を使って明示的に生レンダリングをオプトインする必要があります。
パッチリリースではありますが、MDXで動的なスクリプト/スタイルを扱っているプロジェクトにとっては実質的な仕様変更にあたります。更新後に描画結果を確認してください。
主な変更点
MDXの script / style レンダリングの厳格化
MDX内で <script> / <style> に渡された動的な値が、生出力からエスケープ出力に変わりました(withastro/astro#17896)。生のまま出力したい場合は set:html で明示的にオプトインします。
dev toolbar の 504 エラー修正
ワークスペースリンクされたパッケージが、Viteの初回スキャンで対象にならなかった依存をインポートした際に、dev toolbar が「Outdated Optimize Dep」の 504 エラーを返す問題を修正しました(withastro/astro#17931)。
EOL / サポート状況
Astro は endoflife.date の追跡対象外のため、公式のサポート期限情報は提供されていません。最新の安定版(7系)の利用が推奨されます。npm の dist-tags 上では latest が 7.3.2、旧系統向けに legacy(4系)が維持されています。
開発者への影響
- MDXで
<script>/<style>に変数を渡している場合、出力がエスケープされるため描画結果が変わる可能性があります。 - 生出力が必要な箇所は
set:htmlに置き換えて明示的にオプトインします。 - dev toolbar で 504 エラーに遭遇していた場合は、更新で解消します。
- XSSリスクの低減につながるため、MDXを多用するコンテンツサイトでは適用を推奨します。
アップデート方法
npm install astro@7.3.2
npx astro --version
データソース: GitHub Releases API, npm Registry AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
