概要
Svelteチームは2026年7月、SvelteKit 3のプレビュー版(3.0.0-next.5〜next.13)を相次いで公開した。まだ正式リリース前のプレビュー段階だが、ルーティングまわりのAPI刷新や新しいランタイムモジュールの追加など、開発体験に直結する変更が複数含まれている。SvelteKit 2系でのフォーム送信状態のリアクティブ監視や、エディタの型サポート強化といった周辺機能の改善も並行して進められており、次期メジャーバージョンに向けた土台固めが着実に進んでいる様子がうかがえる。
シャロールーティングの刷新
目玉となるのが、3.0.0-next.13で導入されたgoto関数の新しいstateオプションだ。これまでシャロールーティング(ページ遷移を伴わない履歴操作)を実現するにはpushStateとreplaceStateという別々の関数を使い分ける必要があったが、これらをgotoに統合し、単一のAPIで完結できるように再設計された。あわせてpersistState: trueを指定することで、ページの再読み込みをまたいでも状態を保持できるようになった。従来はリロードすると失われていた一時的なUI状態を維持できるようになる点は、モーダルやサイドパネルなど部分的な画面遷移を多用するアプリケーションにとって実用上の恩恵が大きい。
新モジュール$app/manifestと$app/service-worker
ビルド成果物を実行時に検査できる新モジュール$app/manifestが3.0.0-next.12で追加された。「immutable」「assets」「prerendered」「routes」といった情報を公開しており、これまでビルド設定ファイルなどから間接的にしか把握できなかったビルド出力の詳細を、アプリケーションコードから直接参照できるようになる。あわせて、従来の$service-workerに代わる新モジュール$app/service-workerも導入され、同時に$app/pathsがサービスワーカー内からもインポート可能になった。サービスワーカーの実装においてパス解決のロジックを共通化できる点は、オフライン対応やキャッシュ戦略を組む上での見通しを良くする変更といえる。
API改善と非推奨化
このほか、いくつかのAPIで整理が行われている。invalidateAllは非推奨となり、後継のrefreshAllへの置き換えが進められている(3.0.0-next.8)。またエラーハンドリングもより厳密化され、error(status, message, {...})という形式での呼び出しが必須となった。フォーム関連では、フォームフィールドに変更検知用のdirty()、リモートフォームに操作済み判定用のfield.touched()が追加され、バリデーションUIの実装がしやすくなっている。SvelteKit 2系でもフォーム送信状態を「submitted」プロパティでリアクティブに監視できるようになるなど、フォーム周りの改善は現行バージョンにも波及している。
今後の見通し
Svelte言語ツールでは+error.svelteの型が自動取得されるようになるなど、エディタ体験の改善も継続している。なお、Svelte関連のコミュニティイベントとしてSvelte Summit Ljubljana 2026が11月に開催予定であり、SvelteKit 3の正式リリースに向けた最新情報が共有される場になりそうだ。プレビュー版は破壊的変更を含む可能性があるため、既存プロジェクトでの採用は今後の安定版リリースを待つのが無難だろう。