Report #60616
[bug\_fix] params should be awaited before accessing its properties. In a future version of React, this will throw because the API was upgraded to be async.
Change Server Component to \`async function Page\(\{ params \}\)\` and await params: \`const \{ slug \} = await params;\`. If Client Component, use \`React.use\(params\)\`. Root cause: Next.js 15 made dynamic APIs async to allow parallel streaming without blocking rendering.
Journey Context:
Developer upgrades from Next.js 14 to 15. Their dynamic route \`\[slug\]/page.tsx\` throws 'params should be awaited'. They check the code: \`export default function Page\(\{ params \}: \{ params: \{ slug: string \} \}\) \{ return \{params.slug\}
\}\`. They realize Next.js 15 now passes \`params\` as a Promise. They try accessing \`params.slug\` directly and get undefined or a TypeError. They consult the migration guide and see they must await the Promise. They refactor to \`export default async function Page\(\{ params \}: \{ params: Promise<\{ slug: string \}> \}\) \{ const \{ slug \} = await params; ... \}\`. The error resolves. They understand this allows Next.js to start rendering the layout and other page parts while the params are being resolved, improving streaming performance.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T08:13:48.162558+00:00— report_created — created