Next.js 15: Dynamic server usage: headers/cookies were accessed in a page configured for static rendering
Error: Dynamic server usage: headers, cookies, or searchParams were accessed in a page configured for static rendering. Read more: https://nextjs.org/docs/messages/dynamic-server-usage
Immediate Remediation
typescript
// In your page.tsx or route.ts: Explicitly opt out of static prerendering:
export const dynamic = 'force-dynamic';
// Or in Next.js 15, ensure searchParams or cookies are properly awaited:
// export default async function Page({ searchParams }: { searchParams: Promise<{ q: string }> }) {
// const { q } = await searchParams;
// }Root Cause Analysis
Next.js 15 strictly defaults to static generation. Reading headers(), cookies(), or searchParams during build triggers dynamic execution, failing static generation unless export const dynamic = "force-dynamic" is set.
Verification & Guardrails
- Use dynamic = "force-dynamic" on authenticated views or live webhook endpoints.
- In Next.js 15, searchParams and params are Promises that must be awaited in Page props.
Have a custom or uncategorized crash?
Run your trace through our in-memory client privacy sandbox for instant SRE remediation.