週刊ダイジェスト // JS_FRAMEWORKS — 2026年 第33週
code週刊レポート

SvelteKit 3 RC、フレームワーク契約を再構成 — 第33週 JavaScript

SvelteKit 3の設定・エラー処理刷新と、TanStack Router、Angular 22、Reactによる非同期ライフサイクル分離を追います。

calendar_todaysummarize2026年 第33週bolt重要更新 1件
SvelteKit 3 Release Candidateが公開されました
タグ: フレームワークアップデート読了_時間: 5分

SvelteKit 3 Release Candidateが公開されました

SvelteKit 3がbreaking cleanupと自動sv migrate経路を含むRelease Candidateへ入り、変換できない箇所は明示的なTODOとして残します。設定はvite.config.tsへ移り、$libはNode-nativeな#lib subpath importとなり、TypeScriptは$app/tsconfigを拡張します。Svelte 5とVite 8の要件によりrender error boundary、sourcemap stack trace、単純なservice-worker import、Rolldown buildが可能になります。明示的environment variableは安定化しましたがremote functionはまだ実験的です。Stable release前にbranchでRCを試し、生成された警告をすべて確認する必要があります。

タグ: アーキテクチャ読了_時間: 9分

TanStack Router navigationの内部

TanStack Routerのloading刷新は、一つのnavigation promiseが混同していた四つのライフサイクルを分離します。Loader flightとlease countが共有作業の継続、現在のtransactionがpublish権限を決めます。Private laneが並列loader結果を集約し、framework receiptはReact、Solid、Vueがpublicationを実際にcommitしたか記録します。Redirectはcontrol flowなので、以前のerrorをroute branchのpublishなしに抑えられ、publish権限を失ってもpreloadやcacheに必要なloaderを自動abortしません。このモデルはcancellation、redirect、pending UI、SSR、cache、render acknowledgementで繰り返すbugを対象にします。

タグ: フレームワークアップデート読了_時間: 10分

Angular 22でserviceをlazy loadingする方法

Angular 22injectAsyncを安定化し、重い自動提供serviceを別のdynamic-import chunkへ置き、初回利用時に通常のDIでresolveできます。Angularはpromiseをcacheするため、後続呼び出しは追加requestなしに同じinstanceを再利用します。Serviceは@Injectable({ providedIn: 'root' })または@Service()が必要で、手動scope providerは対象外です。onIdleやpointer・keyboard focusのcustom promise triggerでclick前にprefetchできます。例では起動時の約33 kB development chunkを除きますが、小さい・頻繁に使うserviceではlatencyとasync複雑性が節約を上回る場合があります。

タグ: アーキテクチャ読了_時間: 17分

Next.jsでoptimistic updateを調整する

Next.jsがServer Actionを順次dispatchしても、次stateが前のsave完了前に計算されると、重なるoptimistic writeが先の変更を失うことがあります。Aurora ScharffはuseActionStateを最後の確定stateを受けるqueueとして使い、useOptimisticで同じ純粋reducerを画面へ即時適用します。Save失敗時は以前の確定stateを返し、inverse actionなしでUIをrollbackします。Server Component境界をまたぐcalendar stateはserver-owned eventを複製せず、providerへpending changeを保存します。Pollingやrealtimeで独立に変わるデータにはclient data libraryが引き続き適します。

summarizeダイジェスト_要約

SvelteKit 3が自動migrationコマンドとフレームワーク契約の整理を含むRelease Candidateに到達しました。設定はvite.config.tsへ移り、$libはNode subpath importの#libとなり、TypeScriptは$app/tsconfigを拡張します。Svelte 5のerror boundaryによりrender失敗もload失敗と同じ経路で扱えます。Vite 8とRolldownは必須ですがremote functionはまだ実験的です。

TanStack Routerはnavigationを一つのpromiseで表せない理由を示します。Loader flightとleaseが作業の有効性、現在のtransactionがpublish権限、private laneがloader結果の集約、framework receiptが実際のcommitを担当します。両プロジェクトはcancellation、publication、rendering、configurationを代用させず、各関心事へ明示的な所有者を置くことで偶発的な結合を減らします。

Angular 22は安定化したinjectAsyncで、まれに使う重いserviceへ同じ原則を適用します。Dynamic importが別chunkを作り、Angular DIがserviceをresolveし、idleまたはユーザー意図によるprefetchが初回遅延を隠せます。Next.jsではuseActionStateが重なるwriteをqueueし、useOptimisticがreducer変更を即時表示して失敗時に最後の確定server stateへ戻します。

重要ポイント
  • branchでnpx sv@next migrate sveltekit-3 --tasks all --confirmを実行し、TODO、TypeScript include、service worker設定、残る実験機能を確認してください。
  • 共有非同期処理、publish権限、意味的結果、framework commitを別のライフサイクルとしてモデル化してください。一つのcancellation flagでは四つの問いに答えられません。
  • injectAsyncはまれに使う重い自動提供serviceだけに使い、queueされたoptimistic変更は成功とrollbackが同じtransitionを共有する純粋reducerへ置いてください。