3 months ago
ca94807Phase 1 — prefetch + client cache reuse:
- next.config: experimental.staleTimes { dynamic: 30, static: 180 } so
prefetched/visited dynamic preview RSC is retained client-side instead of
discarded (default dynamic=0).
- dashboard-row: hover-intent now router.prefetch()es the preview RSC (all
envs) so the click is a client-cache hit; warmPreview kept as the prod
server-side data warm.
Phase 2 — only the detail re-renders on ?preview change:
- Move auth + the master list into (home)/layout.tsx, which Next preserves
across same-route soft navigations, so loadDashboardLists + the 100+ row
render happen once and persist.
- page.tsx slimmed to just the detail Suspense slot.
- Row derives its active highlight from useSearchParams (layout can't read
searchParams); drop the threaded activeHref prop from Row/DashboardList.Parent6728dd3