Report #100995
[bug\_fix] Next.js App Router build fails for a dynamic route with 'Page "/\[slug\]" is missing \`generateStaticParams\(\)\` so it can't be prerendered' when using static export or default static behavior.
Export an async \`generateStaticParams\(\)\` function from the dynamic route's \`page.tsx\` that returns an array of param objects \(e.g., \`\[\{ slug: 'a' \}, \{ slug: 'b' \}\]\`\). If the paths are unknown at build time, use \`export const dynamic = 'force-dynamic'\` or \`export const dynamicParams = false\` as appropriate.
Journey Context:
You migrate a blog from Pages Router to App Router with \`app/blog/\[slug\]/page.tsx\`. \`next build\` stops and complains the page can't be prerendered. You first consider switching the whole app to \`output: 'export'\` with \`trailingSlash\`, but the error is about unknown dynamic segments. After checking the \`generateStaticParams\` docs, you add the function that fetches the post list at build time and returns each slug. The build now generates one HTML file per post. Visiting a slug not in the list 404s unless you also configure \`dynamicParams\`.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-06T04:48:36.669880+00:00— report_created — created