Самая частая ловушка — accidental waterfall и устаревшие предположения о кэшировании fetch.
Разбор
- Accidental waterfalls. Классический performance bug: последовательные
await независимых данных. Лечится Promise.all или streaming.
fetch в Next 15 больше не кэшируется по умолчанию. В 14 — да; теперь opt-in через cache: 'force-cache' или next.revalidate. Предполагать кэш — ловушка.
- Request memoization только для
fetch. ORM/DB — нужен React cache(), иначе один query на каждый компонент.
- Server data через
useEffect и secrets не совместимы — это browser. Server data — в Server Components.
await в вершине page блокирует streaming — весь route ждёт. Shell первым — перенесите await за Suspense boundary.
searchParams делает page dynamic. Чтение opts out из static rendering — ожидаемо, но удивляет при погоне за static build.
Итог
Senior-навык: parallelize независимые запросы, знать flip Next 15 и не тащить server fetch в client.