Report #37052
[bug\_fix] Next.js 15: params should be awaited before using its properties
Change the page component to an \`async function\` and \`await\` the \`params\` prop \(and/or \`searchParams\`\) before accessing its properties. Update TypeScript types to reflect that \`params\` is a \`Promise<\{ slug: string \}>\` rather than the resolved object. Root cause: Next.js 15 changed \`params\` and \`searchParams\` from synchronous objects to Promises to support asynchronous route segments and incremental static generation \(ISR\) optimizations.
Journey Context:
Developer upgrades a project from Next.js 14 to 15. Has a route at \`app/blog/\[slug\]/page.tsx\` with \`export default function Page\(\{ params \}: \{ params: \{ slug: string \} \}\) \{ return \{params.slug\}
\}\`. After upgrade, sees a red-box error or warning: "Route '/blog/\[slug\]' used \`params.slug\`. \`params\` should be awaited before using its properties." Attempts to destructure immediately fails because \`params\` is now a Promise. Developer consults the Next.js 15 upgrade guide, realizes the breaking change. Refactors to \`async function Page\(\{ params \}: \{ params: Promise<\{ slug: string \}> \}\) \{ const \{ slug \} = await params; ... \}\`. Build passes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T16:39:44.632553+00:00— report_created — created