- Symptom
- params.slug is undefined in a page that worked on Next.js 14Route "/blog/[slug]" used `params.slug`. `params` is a Promise and must be unwrapped with `await` or `React.use()` before accessing its propertiesProperty 'slug' does not exist on type 'Promise
- Cause
- Next.js 15 turned params, searchParams, cookies(), headers() and draftMode() into Promises but kept a synchronous fallback with a warning. Next.js 16 removed that fallback, so property reads on the raw prop return undefined.
- Fix
- Await the prop in Server Components and unwrap it with React.use() in Client Components. Run the async request API codemod, since the general upgrade codemod skips it.
- Apply
npx @next/codemod@canary next-async-request-api . export default async function Page(props: PageProps<'/blog/[slug]'>) { const { slug } = await props.params }- Affected
- Next.js 15 (warning) and 16 (sync access removed); also opengraph-image, icon and sitemap id params in 16
- Sources
Last verified 2026-10-15 · Confirmed by 0 builders