30秒で判断
- 対応すべき人: Svelte 5を使用しており、deriveds・effectのリアクティビティやSSR出力(
$state.eager()や宣言タグ)で不具合に遭遇している人 - 対応不要な人: Svelte 4以前を使用している人、上記の不具合に該当しない人
- 確認コマンド:
npm list svelte(またはpnpm why svelte)
この変更が意味すること
Svelte 5.56.5 は、deriveds(派生値)とeffectのリアクティビティ挙動、およびSSR(サーバーサイドレンダリング)出力の変換処理を中心とした8件のバグ修正を含むパッチリリースです。
特に、branch/root effect内で読み取られたderivedsが不要に再接続されてしまう問題や、$state.eager() がSSR出力で正しく変換されない問題の修正は、SSRを使うプロジェクトで動作の改善が見込めます。破壊的変更は含まれていません。
主な変更点
TSGOを失敗させるデッドコードの削除
chore: drop dead code that make TSGO fail(PR #18496)。内部的なクリーンアップで、利用者への直接的な影響はありません。
branch/root effect内でのderiveds再接続を抑制
fix: don't (re)connect deriveds when read inside branch/root effects(PR #18527)。effect内で読み取られたderivedsが不要に再接続されていた問題を修正し、リアクティビティの挙動をより正確にします。
早いバッチでの不要なderived effectをスキップ
fix: skip unnecessary derived effect in earlier batch(PR #18525)。
イベントハンドラ内での宣言タグ警告を回避
fix: avoid declaration tag warning in event handlers(PR #18500)。
deriveds自身のAbortSignalをdisconnect時にabort
fix: abort deriveds own AbortSignal when it disconnects(PR #18400)。deriveds内で非同期処理のキャンセルにAbortSignalを使っている場合に関係する修正です。
$state.eager() のSSR変換を修正
fix: ensure $state.eager() is correctly transormed for SSR output(PR #18530)。$state.eager() を使用しているコンポーネントでSSR出力が正しくなります。
宣言タグのSSR変換を修正
fix: correctly transform declaration tags during SSR(PR #18492)。
keyed {#each} の分割代入における算出キーの変換を修正
fix: transform computed keys in keyed {#each} destructuring patterns(PR #18521)。keyed {#each} で分割代入と算出キーを組み合わせて使っている場合に関係する修正です。
EOL / サポート状況
Svelteはendoflife.dateでの公式サポートサイクル追跡対象外です。現在v5系が最新のアクティブブランチとなっています。
| バージョン | 状態 | 最新パッチ |
|---|---|---|
| 5.x | active | 5.56.5(本リリース) |
| 4.x | maintenance | — |
開発者への影響
- SSRで
$state.eager()を使用している場合: 変換の不具合が解消され、意図通りの出力になります - branch/root effect内でderivedsを読み取っている場合: 不要な再接続が解消され、パフォーマンス・挙動の両面で改善が見込めます
- keyed
{#each}で分割代入 + 算出キーを使用している場合: 変換の不具合が解消されます - 上記に該当しない場合: 通常のアップデートサイクルで問題ありません
アップデート方法
# npm でアップデート
npm update svelte
# バージョンを指定してインストール
npm install svelte@5.56.5
# 確認
npx svelte --version
データソース: GitHub Releases API AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
