Status: Draft
Depends on: #221
概要
beforeLoad で毎回 API を呼ぶ代わりに、TanStack Query の persistQueryClient でセッション確認結果を sessionStorage に永続化し、リロード時も即座にルーティング判定できるようにする。
背景 / モチベーション
受け入れ条件
スコープ外
- localStorage への永続化(タブをまたいだキャッシュ共有)
- コールドスタート初回アクセス時の高速化(キャッシュがないため効果なし)
実装方針
authClient.getSession() の呼び出しを TanStack Query の useQuery / useSuspenseQuery に乗せる(現状は beforeLoad で直接呼んでいる)
@tanstack/react-query-persist-client + @tanstack/query-sync-storage-persister を導入
persistQueryClient に sessionStorage persister を設定し、セッションクエリのキャッシュを永続化
- リロード時はキャッシュから即復元 → バックグラウンドで再検証(SWR パターン)
// main.tsx イメージ
import { persistQueryClient } from '@tanstack/react-query-persist-client'
import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'
const persister = createSyncStoragePersister({ storage: window.sessionStorage })
persistQueryClient({ queryClient, persister })
参考
Status: Draft
Depends on: #221
概要
beforeLoadで毎回 API を呼ぶ代わりに、TanStack Query のpersistQueryClientでセッション確認結果を sessionStorage に永続化し、リロード時も即座にルーティング判定できるようにする。背景 / モチベーション
pendingComponentによる loading 表示を追加したが、毎回スピナーが表示される体験は依然として残る受け入れ条件
/loginへ正しくリダイレクトされるスコープ外
実装方針
authClient.getSession()の呼び出しを TanStack Query のuseQuery/useSuspenseQueryに乗せる(現状はbeforeLoadで直接呼んでいる)@tanstack/react-query-persist-client+@tanstack/query-sync-storage-persisterを導入persistQueryClientに sessionStorage persister を設定し、セッションクエリのキャッシュを永続化参考