Astro 5.7 リリース
Astro 5.7 がリリースされた。Sessions API が安定化され、SVG Components、Experimental Fonts API、Config Imports などの新機能が追加された。
Sessions API
Sessions API が安定化され、本番環境での使用が可能になった。サーバーサイドでユーザー固有のデータを安全に保存可能。クライアントサイドの JavaScript なしで動作する。
typescript
// src/components/CartButton.astro
const cart = await Astro.session.get("cart");
export const prerender = false;
<a href="/checkout">🛒 {cart?.length ?? 0} items</a>;TypeScript の型安全性もサポート。
typescript
// src/env.d.ts
declare namespace App {
interface SessionData {
user: {
id: string;
name: string;
};
cart: string[];
}
}SVG Components
ローカルの SVG ファイルをコンポーネントとして使用可能になった。SVG コンポーネントは自動的に HTML に<svg>タグとしてインライン化される。
astro
// src/components/MyAstroComponent.astro
import Logo from './path/to/svg/file.svg';
<Logo width={64} height={64} fill="currentColor" />Experimental Fonts API
Experimental Fonts API が追加された。ファイルシステムや Google、Fontsource、Bunny などのプロバイダーからフォントを統一的に使用可能。パフォーマンス最適化とフォールバックフォントの自動生成を含む。
javascript
// astro.config.mjs
import { defineConfig, fontProviders } from "astro/config";
export default defineConfig({
experimental: {
fonts: [
{
provider: fontProviders.google(),
name: "Roboto",
cssVariable: "--font-roboto",
},
],
},
});Config Imports
astro:config仮想モジュールが安定化された。Astro の設定を型安全にインポート可能。
javascript
// src/utils.js
import { trailingSlash, base } from "astro:config/client";
function addForwardSlashAndBase(path) {
let finalPath;
if (trailingSlash === "always") {
finalPath = path.endsWith("/") ? path : path + "/";
} else {
finalPath = path;
}
if (base !== "/") {
return base + finalPath;
}
return finalPath;
}