15에서 16으로 업그레이드한 뒤 빌드가 안 됩니다. 사용자별 헤더가 들어가는 영역까지 통째로 'use cache' 안에 넣어두고 있었는데 16에선 에러로 떠요.
환경: Next.js 16.2.1, React 19.2, App Router, Vercel 배포
에러 메시지:
Error: Route /dashboard used "cookies" inside "use cache".
Accessing dynamic data sources inside a cache scope is not supported.
Learn more: https://nextjs.org/docs/messages/next-request-in-use-cache
문제 코드 (대략 이런 모양입니다):
// app/dashboard/page.tsx
'use cache'
export default async function Dashboard() {
const user = await getUser() // 내부에서 cookies() 호출
const data = await fetchProjects(user.id)
return <DashboardView user={user} data={data} />
}
구조상 이 페이지의 80%는 캐시되어도 되고, 20%(사용자 헤더·아바타)만 동적이면 됩니다. 'use cache' 자체를 빼면 너무 느려져서 부분 캐싱을 하고 싶은데, 어떤 패턴이 맞나요? force-dynamic으로 통째 빼는 것 말고 다른 방법이 있을까요?
댓글 0