nextjs rendering_error ai_generated true

Error: Dynamic server usage: cookies/headers() used in a page that will be statically generated

ID: nextjs/cookies-headers-in-page

Also available as: JSON · Markdown
90%Fix Rate
92%Confidence
50Evidence
2023-01-01First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
14 active

Root Cause

Using cookies()/headers() makes the page dynamic, conflicting with static generation.

generic

Workarounds

  1. 95% success Add export const dynamic = 'force-dynamic' to opt into dynamic rendering
    // app/page.tsx:
    export const dynamic = 'force-dynamic';
    
    // This tells Next.js this page can't be statically rendered
    // and must be rendered on each request (SSR)
    
    import { cookies } from 'next/headers';
    export default function Page() {
      const cookieStore = cookies();
      // Now works without error
    }

    Sources: https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic

  2. 85% success Move cookie/header access to middleware or API routes if possible
    // Move cookie/header logic to middleware:
    // middleware.ts:
    import { NextRequest, NextResponse } from 'next/server';
    
    export function middleware(request: NextRequest) {
      const token = request.cookies.get('auth-token');
      if (!token) return NextResponse.redirect(new URL('/login', request.url));
      return NextResponse.next();
    }

    Sources: https://nextjs.org/docs/app/building-your-application/routing/middleware

Dead Ends

Common approaches that don't work:

  1. Remove cookies/headers calls 60% fail

    May break auth or personalization features

Error Chain

Frequently confused with: