--- id: dynamic-rendering-traps title: Dynamic rendering traps status: active candidateKinds: ["rendering_candidate"] frameworks: ["next@>=13.0.0"] priority: 90 citations: ["https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config", "https://nextjs.org/docs/app/api-reference/functions/generate-static-params", "https://nextjs.org/docs/app/building-your-application/rendering/partial-prerendering"] maxBriefChars: 850 --- ## Investigation Brief Rendering candidates are only actionable when the dynamic behavior is accidental. First prove that the route can be static, ISR, or partially static. ## Evidence To Check Inspect `dynamic`, `revalidate`, `generateStaticParams`, route params, and dynamic APIs such as request headers or cookies. Check whether the dynamic call is in a layout, because that can affect a larger route tree. ## Do Not Recommend When Do not remove dynamic rendering for auth, personalization, draft mode, per-request redirects, or request-specific data. ## Verification The recommendation must cite the dynamic trigger and explain why the target route can tolerate static or ISR behavior.