Layout stale data после navigation — ловушка №1; route groups не меняют URL.
Разбор
- «Почему layout data stale после navigation?» Layouts не re-run между children. Самый частый layout bug. Per-route data — в
page.
- Root layout mandatory, owns
<html>/<body>. Nested layouts не рендерят их снова.
- Route groups не в URL —
(auth) invisible. /(auth)/login → /login, не /auth/login.
loading.tsx и error.tsx wrap segment inside layout — layout visible, page suspends/errors. Shell up, content loading — intended UX.
- Data layout → page не через props — separate server renders. Share через deduped fetch helper или client context.
Итог
Layouts = shared shell без re-fetch; pages = fresh per-route data.