diff --git a/test/e2e/app-dir/actions/app/header/edge/validator.js b/test/e2e/app-dir/actions/app/header/edge/validator.js index 3f0f7c78252e2..a578bd36de90f 100644 --- a/test/e2e/app-dir/actions/app/header/edge/validator.js +++ b/test/e2e/app-dir/actions/app/header/edge/validator.js @@ -3,7 +3,7 @@ import { cookies } from 'next/headers' export function validator(action) { return async function (arg) { 'use server' - const auth = cookies().get('edge-auth') + const auth = (await cookies()).get('edge-auth') if (auth?.value !== '1') { throw new Error('Unauthorized request') } diff --git a/test/e2e/app-dir/app-client-cache/fixtures/parallel-routes/app/@breadcrumbs/[id]/page.js b/test/e2e/app-dir/app-client-cache/fixtures/parallel-routes/app/@breadcrumbs/[id]/page.js index 43ade54c21804..ce9c8a00f1557 100644 --- a/test/e2e/app-dir/app-client-cache/fixtures/parallel-routes/app/@breadcrumbs/[id]/page.js +++ b/test/e2e/app-dir/app-client-cache/fixtures/parallel-routes/app/@breadcrumbs/[id]/page.js @@ -1,4 +1,5 @@ -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return (
Catchall
{JSON.stringify(params)}
{' '} diff --git a/test/e2e/app-dir/app-css/app/loading-bug/[categorySlug]/page.js b/test/e2e/app-dir/app-css/app/loading-bug/[categorySlug]/page.js index 714616632e967..ed795b5505d8e 100644 --- a/test/e2e/app-dir/app-css/app/loading-bug/[categorySlug]/page.js +++ b/test/e2e/app-dir/app-css/app/loading-bug/[categorySlug]/page.js @@ -7,7 +7,8 @@ const fetchCategory = async (categorySlug) => { return categorySlug + 'abc' } -export default function Page({ params }) { +export default function Page(props) { + const params = use(props.params) const category = use(fetchCategory(params.categorySlug)) return
{category}
diff --git a/test/e2e/app-dir/app-css/app/not-found/clientcomponent/page.js b/test/e2e/app-dir/app-css/app/not-found/clientcomponent/page.js index 066490779210e..4d28919b28e72 100644 --- a/test/e2e/app-dir/app-css/app/not-found/clientcomponent/page.js +++ b/test/e2e/app-dir/app-css/app/not-found/clientcomponent/page.js @@ -2,8 +2,8 @@ import ClientComp from './client-component' import { headers } from 'next/headers' -export default function Page() { +export default async function Page() { // Opt-in to SSR. - headers() + await headers() return } diff --git a/test/e2e/app-dir/app-esm-js/app/app/hooks.js b/test/e2e/app-dir/app-esm-js/app/app/hooks.js index bd406ba2852e8..c9e3f658b98d6 100644 --- a/test/e2e/app-dir/app-esm-js/app/app/hooks.js +++ b/test/e2e/app-dir/app-esm-js/app/app/hooks.js @@ -3,7 +3,7 @@ import { ClientHooks } from './client-hooks' import { headers, cookies } from 'next/headers' export function useHooks() { - headers() + use(headers()) use(cookies()) return } diff --git a/test/e2e/app-dir/app-fetch-deduping/app/bad-response-page/[slug]/page.js b/test/e2e/app-dir/app-fetch-deduping/app/bad-response-page/[slug]/page.js index 6b900ddbc6a7e..93981ffc1efb5 100644 --- a/test/e2e/app-dir/app-fetch-deduping/app/bad-response-page/[slug]/page.js +++ b/test/e2e/app-dir/app-fetch-deduping/app/bad-response-page/[slug]/page.js @@ -20,7 +20,7 @@ export async function generateStaticParams() { ] } -export default async function Page({ params }) { +export default async function Page() { const data = await fetch( `http://localhost:${process.env.TEST_SERVER_PORT}?status=404` ).then((res) => res.text()) diff --git a/test/e2e/app-dir/app-fetch-deduping/app/blog/[slug]/page.js b/test/e2e/app-dir/app-fetch-deduping/app/blog/[slug]/page.js index 3e8ac4de29dfd..5f20cc8551c67 100644 --- a/test/e2e/app-dir/app-fetch-deduping/app/blog/[slug]/page.js +++ b/test/e2e/app-dir/app-fetch-deduping/app/blog/[slug]/page.js @@ -18,7 +18,7 @@ export async function generateStaticParams() { ] } -export default async function Page({ params }) { +export default async function Page() { const data = await fetch( `http://localhost:${process.env.TEST_SERVER_PORT}` ).then((res) => res.text()) diff --git a/test/e2e/app-dir/app-middleware/app/headers/page.js b/test/e2e/app-dir/app-middleware/app/headers/page.js index e7d5e20ddf94e..977111f49c646 100644 --- a/test/e2e/app-dir/app-middleware/app/headers/page.js +++ b/test/e2e/app-dir/app-middleware/app/headers/page.js @@ -1,7 +1,7 @@ import { headers } from 'next/headers' -export default function SSRPage() { - const headersObj = Object.fromEntries(headers()) +export default async function SSRPage() { + const headersObj = Object.fromEntries(await headers()) return ( <>

app-dir

diff --git a/test/e2e/app-dir/app-middleware/middleware.js b/test/e2e/app-dir/app-middleware/middleware.js index e8409c227b947..0e4dd2ea8ad95 100644 --- a/test/e2e/app-dir/app-middleware/middleware.js +++ b/test/e2e/app-dir/app-middleware/middleware.js @@ -8,7 +8,7 @@ import { headers as nextHeaders, draftMode } from 'next/headers' export async function middleware(request) { const headersFromRequest = new Headers(request.headers) // It should be able to import and use `headers` inside middleware - const headersFromNext = nextHeaders() + const headersFromNext = await nextHeaders() headersFromRequest.set('x-from-middleware', 'hello-from-middleware') // make sure headers() from `next/headers` is behaving properly diff --git a/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/dynamic-area/[slug]/page.js b/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/dynamic-area/[slug]/page.js index 6040b75de167b..f446c87c26ef6 100644 --- a/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/dynamic-area/[slug]/page.js +++ b/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/dynamic-area/[slug]/page.js @@ -1,3 +1,3 @@ -export default async function DynamicPage({ params, searchParams }) { +export default async function DynamicPage(props) { return
Hello from Dynamic Prefetch Page
} diff --git a/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/layout.js b/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/layout.js index 92c69396f61f7..28231e51868d5 100644 --- a/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/layout.js +++ b/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/layout.js @@ -1,6 +1,6 @@ export const regions = ['SE', 'DE'] -export default async function Layout({ children, params }) { +export default function Layout({ children }) { return children } diff --git a/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/static-prefetch/page.js b/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/static-prefetch/page.js index 067d0371e6aef..00f20c489d4a9 100644 --- a/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/static-prefetch/page.js +++ b/test/e2e/app-dir/app-prefetch-static/app/[region]/(default)/static-prefetch/page.js @@ -1,6 +1,6 @@ export const dynamic = 'force-dynamic' -export default async function StaticPrefetchPage({ params }) { +export default function StaticPrefetchPage(props) { return (

Hello from Static Prefetch Page

diff --git a/test/e2e/app-dir/app-prefetch/app/dashboard/[id]/page.js b/test/e2e/app-dir/app-prefetch/app/dashboard/[id]/page.js index 186f6bbecc23a..755901b394f88 100644 --- a/test/e2e/app-dir/app-prefetch/app/dashboard/[id]/page.js +++ b/test/e2e/app-dir/app-prefetch/app/dashboard/[id]/page.js @@ -12,7 +12,8 @@ export function generateStaticParams() { return [{ id: 'static' }] } -export default function IdPage({ params }) { +export default function IdPage(props) { + const params = use(props.params) const data = use(getData()) console.log(data) diff --git a/test/e2e/app-dir/app-prefetch/app/prefetch-auto/[slug]/page.js b/test/e2e/app-dir/app-prefetch/app/prefetch-auto/[slug]/page.js index 23c8bdc9b5cb1..f6e85c314a3b8 100644 --- a/test/e2e/app-dir/app-prefetch/app/prefetch-auto/[slug]/page.js +++ b/test/e2e/app-dir/app-prefetch/app/prefetch-auto/[slug]/page.js @@ -9,7 +9,8 @@ function getData() { return res } -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params const result = await getData() return ( diff --git a/test/e2e/app-dir/app-routes/app/revalidate-1/[slug]/data.json/route.ts b/test/e2e/app-dir/app-routes/app/revalidate-1/[slug]/data.json/route.ts index 975ef0f51e050..2b356d93eea21 100644 --- a/test/e2e/app-dir/app-routes/app/revalidate-1/[slug]/data.json/route.ts +++ b/test/e2e/app-dir/app-routes/app/revalidate-1/[slug]/data.json/route.ts @@ -9,8 +9,9 @@ export function generateStaticParams() { export const GET = async ( req: NextRequest, - { params }: { params: Promise<{ slug: string }> } + props: { params: Promise<{ slug: string }> } ) => { + const params = await props.params const resolvedParams = await params return NextResponse.json({ params: resolvedParams, now: Date.now() }) } diff --git a/test/e2e/app-dir/app-routes/app/static/[slug]/data.json/route.ts b/test/e2e/app-dir/app-routes/app/static/[slug]/data.json/route.ts index 570a309dcf13a..6faa0b27efa58 100644 --- a/test/e2e/app-dir/app-routes/app/static/[slug]/data.json/route.ts +++ b/test/e2e/app-dir/app-routes/app/static/[slug]/data.json/route.ts @@ -7,8 +7,9 @@ export function generateStaticParams() { export const GET = async ( req: NextRequest, - { params }: { params: Promise<{ slug: string }> } + props: { params: Promise<{ slug: string }> } ) => { + const params = await props.params const resolvedParams = await params return NextResponse.json({ params: resolvedParams, now: Date.now() }) } diff --git a/test/e2e/app-dir/app-static/app/blog/[author]/[slug]/page.js b/test/e2e/app-dir/app-static/app/blog/[author]/[slug]/page.js index 5ae52dfe56be7..b910caff3511a 100644 --- a/test/e2e/app-dir/app-static/app/blog/[author]/[slug]/page.js +++ b/test/e2e/app-dir/app-static/app/blog/[author]/[slug]/page.js @@ -2,7 +2,8 @@ import { notFound } from 'next/navigation' export const dynamicParams = true -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params if (params.author === 'shu') { notFound() } diff --git a/test/e2e/app-dir/app-static/app/blog/[author]/layout.js b/test/e2e/app-dir/app-static/app/blog/[author]/layout.js index 3f6a1da93c5b3..c206d2ea77a02 100644 --- a/test/e2e/app-dir/app-static/app/blog/[author]/layout.js +++ b/test/e2e/app-dir/app-static/app/blog/[author]/layout.js @@ -1,4 +1,8 @@ -export default function Layout({ children, params }) { +export default async function Layout(props) { + const params = await props.params + + const { children } = props + return ( <>

{JSON.stringify(params)}

diff --git a/test/e2e/app-dir/app-static/app/blog/[author]/page.js b/test/e2e/app-dir/app-static/app/blog/[author]/page.js index fa5e3e0b23d6c..aea63fbe0877c 100644 --- a/test/e2e/app-dir/app-static/app/blog/[author]/page.js +++ b/test/e2e/app-dir/app-static/app/blog/[author]/page.js @@ -2,7 +2,8 @@ import Link from 'next/link' export const dynamicParams = false -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params await fetch('https://example.vercel.sh', { next: { revalidate: 10 }, }) diff --git a/test/e2e/app-dir/app-static/app/dynamic-error/[id]/page.js b/test/e2e/app-dir/app-static/app/dynamic-error/[id]/page.js index 837c29b470876..c10d5574131d2 100644 --- a/test/e2e/app-dir/app-static/app/dynamic-error/[id]/page.js +++ b/test/e2e/app-dir/app-static/app/dynamic-error/[id]/page.js @@ -2,7 +2,8 @@ import { cookies } from 'next/headers' export const dynamic = 'error' -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params // When PPR is enabled, we will bailout on parameter access. if (!process.env.__NEXT_EXPERIMENTAL_PPR) { if (params.id.includes('static-bailout')) { diff --git a/test/e2e/app-dir/app-static/app/dynamic-no-gen-params-ssr/[slug]/page.js b/test/e2e/app-dir/app-static/app/dynamic-no-gen-params-ssr/[slug]/page.js index 834d9077d28d1..a9598add5c593 100644 --- a/test/e2e/app-dir/app-static/app/dynamic-no-gen-params-ssr/[slug]/page.js +++ b/test/e2e/app-dir/app-static/app/dynamic-no-gen-params-ssr/[slug]/page.js @@ -1,6 +1,7 @@ export const revalidate = 0 -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return ( <>

/dynamic-no-gen-params-ssr

diff --git a/test/e2e/app-dir/app-static/app/dynamic-no-gen-params/[slug]/page.js b/test/e2e/app-dir/app-static/app/dynamic-no-gen-params/[slug]/page.js index 97682547a4d62..7e6fae1089f93 100644 --- a/test/e2e/app-dir/app-static/app/dynamic-no-gen-params/[slug]/page.js +++ b/test/e2e/app-dir/app-static/app/dynamic-no-gen-params/[slug]/page.js @@ -1,8 +1,10 @@ 'use client' +import { use } from 'react' import Link from 'next/link' -export default function Page({ params }) { +export default function Page(props) { + const params = use(props.params) return ( <>

/dynamic-no-gen-params

diff --git a/test/e2e/app-dir/app-static/app/force-dynamic-no-prerender/[id]/page.js b/test/e2e/app-dir/app-static/app/force-dynamic-no-prerender/[id]/page.js index e42e7e48da2c7..f83ba7972fb27 100644 --- a/test/e2e/app-dir/app-static/app/force-dynamic-no-prerender/[id]/page.js +++ b/test/e2e/app-dir/app-static/app/force-dynamic-no-prerender/[id]/page.js @@ -1,5 +1,5 @@ export const dynamic = 'force-dynamic' -export default function Page({ params }) { +export default function Page(props) { throw new Error('this should not attempt prerendering with force-dynamic') } diff --git a/test/e2e/app-dir/app-static/app/force-dynamic-prerender/[slug]/page.js b/test/e2e/app-dir/app-static/app/force-dynamic-prerender/[slug]/page.js index eb86c1b4e3197..279e3636fb4ea 100644 --- a/test/e2e/app-dir/app-static/app/force-dynamic-prerender/[slug]/page.js +++ b/test/e2e/app-dir/app-static/app/force-dynamic-prerender/[slug]/page.js @@ -8,7 +8,8 @@ export const generateStaticParams = async () => { return [{ slug: 'frameworks' }] } -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params const result = (await cookies()).get('session')?.value ? 'has cookie' : 'no cookie' diff --git a/test/e2e/app-dir/app-static/app/force-static/[slug]/page.js b/test/e2e/app-dir/app-static/app/force-static/[slug]/page.js index 0083019a243cc..4589e03f984af 100644 --- a/test/e2e/app-dir/app-static/app/force-static/[slug]/page.js +++ b/test/e2e/app-dir/app-static/app/force-static/[slug]/page.js @@ -13,7 +13,8 @@ function Dynamic({ params }) { return

{JSON.stringify(params)}

} -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return (

/force-static/[slug]

diff --git a/test/e2e/app-dir/app-static/app/force-static/layout.js b/test/e2e/app-dir/app-static/app/force-static/layout.js index b41b643fe1f25..8296c22976a9e 100644 --- a/test/e2e/app-dir/app-static/app/force-static/layout.js +++ b/test/e2e/app-dir/app-static/app/force-static/layout.js @@ -1,8 +1,8 @@ import { cookies, headers } from 'next/headers' -export default function Layout({ children }) { - const curHeaders = headers() - const curCookies = cookies() +export default async function Layout({ children }) { + const curHeaders = await headers() + const curCookies = await cookies() return ( <> diff --git a/test/e2e/app-dir/app-static/app/gen-params-dynamic-revalidate/[slug]/page.js b/test/e2e/app-dir/app-static/app/gen-params-dynamic-revalidate/[slug]/page.js index 23b94efed6e8c..598b8fc8ed368 100644 --- a/test/e2e/app-dir/app-static/app/gen-params-dynamic-revalidate/[slug]/page.js +++ b/test/e2e/app-dir/app-static/app/gen-params-dynamic-revalidate/[slug]/page.js @@ -6,7 +6,8 @@ export async function generateStaticParams() { return [{ slug: 'one' }] } -export default async function page({ params }) { +export default async function page(props) { + const params = await props.params const { slug } = params let data diff --git a/test/e2e/app-dir/app-static/app/gen-params-dynamic/[slug]/page.js b/test/e2e/app-dir/app-static/app/gen-params-dynamic/[slug]/page.js index f9d5366ea389b..334b53337a568 100644 --- a/test/e2e/app-dir/app-static/app/gen-params-dynamic/[slug]/page.js +++ b/test/e2e/app-dir/app-static/app/gen-params-dynamic/[slug]/page.js @@ -4,7 +4,8 @@ export async function generateStaticParams() { return [{ slug: 'one' }] } -export default async function page({ params }) { +export default async function page(props) { + const params = await props.params const { slug } = params const data = await fetchRetry( 'https://next-data-api-endpoint.vercel.app/api/random', diff --git a/test/e2e/app-dir/app-static/app/partial-gen-params-no-additional-lang/[lang]/[slug]/page.js b/test/e2e/app-dir/app-static/app/partial-gen-params-no-additional-lang/[lang]/[slug]/page.js index 45da73dcfed37..dcad8f27bb8ee 100644 --- a/test/e2e/app-dir/app-static/app/partial-gen-params-no-additional-lang/[lang]/[slug]/page.js +++ b/test/e2e/app-dir/app-static/app/partial-gen-params-no-additional-lang/[lang]/[slug]/page.js @@ -23,7 +23,8 @@ export async function generateStaticParams() { ] } -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return ( <>

/partial-gen-params/[lang]/[slug]

diff --git a/test/e2e/app-dir/app-static/app/partial-gen-params-no-additional-slug/[lang]/[slug]/page.js b/test/e2e/app-dir/app-static/app/partial-gen-params-no-additional-slug/[lang]/[slug]/page.js index 7e132527eb4c4..c954dc87e6d64 100644 --- a/test/e2e/app-dir/app-static/app/partial-gen-params-no-additional-slug/[lang]/[slug]/page.js +++ b/test/e2e/app-dir/app-static/app/partial-gen-params-no-additional-slug/[lang]/[slug]/page.js @@ -23,7 +23,8 @@ export async function generateStaticParams() { ] } -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return ( <>

/partial-gen-params/[lang]/[slug]

diff --git a/test/e2e/app-dir/app-static/app/partial-gen-params/[lang]/[slug]/page.js b/test/e2e/app-dir/app-static/app/partial-gen-params/[lang]/[slug]/page.js index 47c212176f011..1f8bc98630707 100644 --- a/test/e2e/app-dir/app-static/app/partial-gen-params/[lang]/[slug]/page.js +++ b/test/e2e/app-dir/app-static/app/partial-gen-params/[lang]/[slug]/page.js @@ -1,4 +1,5 @@ -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return ( <>

/partial-gen-params/[lang]/[slug]

diff --git a/test/e2e/app-dir/app-static/app/ssg-draft-mode/[[...route]]/page.js b/test/e2e/app-dir/app-static/app/ssg-draft-mode/[[...route]]/page.js index 9b3ef6f1bc6d5..a8c5d759eeff1 100644 --- a/test/e2e/app-dir/app-static/app/ssg-draft-mode/[[...route]]/page.js +++ b/test/e2e/app-dir/app-static/app/ssg-draft-mode/[[...route]]/page.js @@ -5,7 +5,7 @@ export default async function Page() { 'https://next-data-api-endpoint.vercel.app/api/random' ).then((res) => res.text()) - const { isEnabled } = draftMode() + const { isEnabled } = await draftMode() return (
diff --git a/test/e2e/app-dir/app-static/app/static-to-dynamic-error-forced/[id]/page.js b/test/e2e/app-dir/app-static/app/static-to-dynamic-error-forced/[id]/page.js index 5f6b80e43da43..20d5272c9705d 100644 --- a/test/e2e/app-dir/app-static/app/static-to-dynamic-error-forced/[id]/page.js +++ b/test/e2e/app-dir/app-static/app/static-to-dynamic-error-forced/[id]/page.js @@ -2,9 +2,10 @@ import { cookies } from 'next/headers' export const dynamic = 'force-static' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params if (params.id.includes('static-bailout')) { - console.log('calling cookies', cookies()) + console.log('calling cookies', await cookies()) } return ( diff --git a/test/e2e/app-dir/app-static/app/static-to-dynamic-error/[id]/page.js b/test/e2e/app-dir/app-static/app/static-to-dynamic-error/[id]/page.js index 076ac3c9ad584..e34027da0bcd4 100644 --- a/test/e2e/app-dir/app-static/app/static-to-dynamic-error/[id]/page.js +++ b/test/e2e/app-dir/app-static/app/static-to-dynamic-error/[id]/page.js @@ -1,8 +1,9 @@ import { cookies } from 'next/headers' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params if (params.id.includes('static-bailout')) { - console.log('calling cookies', cookies()) + console.log('calling cookies', await cookies()) } return ( diff --git a/test/e2e/app-dir/app-static/app/variable-revalidate/authorization/route-cookies/route.js b/test/e2e/app-dir/app-static/app/variable-revalidate/authorization/route-cookies/route.js index 6933f6af261ca..e6f804475bbfb 100644 --- a/test/e2e/app-dir/app-static/app/variable-revalidate/authorization/route-cookies/route.js +++ b/test/e2e/app-dir/app-static/app/variable-revalidate/authorization/route-cookies/route.js @@ -2,7 +2,7 @@ import { cookies } from 'next/headers' import { NextResponse } from 'next/server' export async function GET() { - const cookieData = cookies() + const cookieData = await cookies() const data = await fetch( 'https://next-data-api-endpoint.vercel.app/api/random', diff --git a/test/e2e/app-dir/app/app/back-forward/[id]/page.js b/test/e2e/app-dir/app/app/back-forward/[id]/page.js index 12da862d8a19e..f2484917ff977 100644 --- a/test/e2e/app-dir/app/app/back-forward/[id]/page.js +++ b/test/e2e/app-dir/app/app/back-forward/[id]/page.js @@ -1,8 +1,10 @@ 'use client' +import { use } from 'react' import Link from 'next/link' import { useRouter } from 'next/navigation' -export default function Page({ params }) { +export default function Page(props) { + const params = use(props.params) const router = useRouter() return ( <> diff --git a/test/e2e/app-dir/app/app/catch-all-edge/[...slug]/page.js b/test/e2e/app-dir/app/app/catch-all-edge/[...slug]/page.js index fada8420e95d6..780c94f08f69d 100644 --- a/test/e2e/app-dir/app/app/catch-all-edge/[...slug]/page.js +++ b/test/e2e/app-dir/app/app/catch-all-edge/[...slug]/page.js @@ -1,6 +1,7 @@ export const runtime = 'edge' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return ( <>

catch-all edge page

diff --git a/test/e2e/app-dir/app/app/catch-all-optional/[[...slug]]/page.js b/test/e2e/app-dir/app/app/catch-all-optional/[[...slug]]/page.js index 7a7a7b4d92dd0..5f19e2af72adb 100644 --- a/test/e2e/app-dir/app/app/catch-all-optional/[[...slug]]/page.js +++ b/test/e2e/app-dir/app/app/catch-all-optional/[[...slug]]/page.js @@ -1,4 +1,5 @@ -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return (

hello from /catch-all-optional/{params.slug?.join('/')} diff --git a/test/e2e/app-dir/app/app/catch-all/[...slug]/page.js b/test/e2e/app-dir/app/app/catch-all/[...slug]/page.js index 55ba1e4559517..db22bcab2c0e3 100644 --- a/test/e2e/app-dir/app/app/catch-all/[...slug]/page.js +++ b/test/e2e/app-dir/app/app/catch-all/[...slug]/page.js @@ -1,7 +1,8 @@ import Widget from './components/widget' import NotAPage from './not-a-page' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return ( <>

diff --git a/test/e2e/app-dir/app/app/dashboard/deployments/info/[id]/page.js b/test/e2e/app-dir/app/app/dashboard/deployments/info/[id]/page.js index df11944f5ad10..6039777eabb3e 100644 --- a/test/e2e/app-dir/app/app/dashboard/deployments/info/[id]/page.js +++ b/test/e2e/app-dir/app/app/dashboard/deployments/info/[id]/page.js @@ -1,4 +1,5 @@ -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return ( <>

diff --git a/test/e2e/app-dir/app/app/dynamic-client/[category]/[id]/layout.js b/test/e2e/app-dir/app/app/dynamic-client/[category]/[id]/layout.js index 0d09ad0787599..358162b55ec79 100644 --- a/test/e2e/app-dir/app/app/dynamic-client/[category]/[id]/layout.js +++ b/test/e2e/app-dir/app/app/dynamic-client/[category]/[id]/layout.js @@ -1,4 +1,8 @@ -export default function IdLayout({ children, params }) { +export default async function IdLayout(props) { + const params = await props.params + + const { children } = props + return ( <>

diff --git a/test/e2e/app-dir/app/app/dynamic-client/[category]/[id]/page.js b/test/e2e/app-dir/app/app/dynamic-client/[category]/[id]/page.js index d3a6c0a1fe41d..34fef9f7e6e66 100644 --- a/test/e2e/app-dir/app/app/dynamic-client/[category]/[id]/page.js +++ b/test/e2e/app-dir/app/app/dynamic-client/[category]/[id]/page.js @@ -1,4 +1,5 @@ 'use client' +import { use } from 'react' import { useSearchParams } from 'next/navigation' import dynamic from 'next/dynamic' @@ -7,7 +8,11 @@ const Button = dynamic(() => import('../../../../components/button/button').then((mod) => mod.Button) ) -export default function IdPage({ children, params }) { +export default function IdPage(props) { + const params = use(props.params) + + const { children } = props + return ( <>

diff --git a/test/e2e/app-dir/app/app/dynamic-client/[category]/layout.js b/test/e2e/app-dir/app/app/dynamic-client/[category]/layout.js index 2744b8a83916d..0a0e910ef3543 100644 --- a/test/e2e/app-dir/app/app/dynamic-client/[category]/layout.js +++ b/test/e2e/app-dir/app/app/dynamic-client/[category]/layout.js @@ -1,4 +1,8 @@ -export default function CategoryLayout({ children, params }) { +export default async function CategoryLayout(props) { + const params = await props.params + + const { children } = props + return ( <>

diff --git a/test/e2e/app-dir/app/app/dynamic-client/layout.js b/test/e2e/app-dir/app/app/dynamic-client/layout.js index 549e0e30e6721..d1508fbed5903 100644 --- a/test/e2e/app-dir/app/app/dynamic-client/layout.js +++ b/test/e2e/app-dir/app/app/dynamic-client/layout.js @@ -1,4 +1,8 @@ -export default function DynamicLayout({ children, params }) { +export default async function DynamicLayout(props) { + const params = await props.params + + const { children } = props + return ( <>

diff --git a/test/e2e/app-dir/app/app/dynamic/[category]/[id]/layout.js b/test/e2e/app-dir/app/app/dynamic/[category]/[id]/layout.js index 0d09ad0787599..358162b55ec79 100644 --- a/test/e2e/app-dir/app/app/dynamic/[category]/[id]/layout.js +++ b/test/e2e/app-dir/app/app/dynamic/[category]/[id]/layout.js @@ -1,4 +1,8 @@ -export default function IdLayout({ children, params }) { +export default async function IdLayout(props) { + const params = await props.params + + const { children } = props + return ( <>

diff --git a/test/e2e/app-dir/app/app/dynamic/[category]/[id]/page.js b/test/e2e/app-dir/app/app/dynamic/[category]/[id]/page.js index a9551752a6ec3..be49503a994e7 100644 --- a/test/e2e/app-dir/app/app/dynamic/[category]/[id]/page.js +++ b/test/e2e/app-dir/app/app/dynamic/[category]/[id]/page.js @@ -1,4 +1,9 @@ -export default async function IdPage({ children, params, searchParams }) { +export default async function IdPage(props) { + const params = await props.params + const searchParams = await props.searchParams + + const { children } = props + return ( <>

diff --git a/test/e2e/app-dir/app/app/dynamic/[category]/layout.js b/test/e2e/app-dir/app/app/dynamic/[category]/layout.js index 2744b8a83916d..0a0e910ef3543 100644 --- a/test/e2e/app-dir/app/app/dynamic/[category]/layout.js +++ b/test/e2e/app-dir/app/app/dynamic/[category]/layout.js @@ -1,4 +1,8 @@ -export default function CategoryLayout({ children, params }) { +export default async function CategoryLayout(props) { + const params = await props.params + + const { children } = props + return ( <>

diff --git a/test/e2e/app-dir/app/app/dynamic/layout.js b/test/e2e/app-dir/app/app/dynamic/layout.js index 549e0e30e6721..d1508fbed5903 100644 --- a/test/e2e/app-dir/app/app/dynamic/layout.js +++ b/test/e2e/app-dir/app/app/dynamic/layout.js @@ -1,4 +1,8 @@ -export default function DynamicLayout({ children, params }) { +export default async function DynamicLayout(props) { + const params = await props.params + + const { children } = props + return ( <>

diff --git a/test/e2e/app-dir/app/app/link-hard-push/[id]/page.js b/test/e2e/app-dir/app/app/link-hard-push/[id]/page.js index 0ce09bfa6ab7e..3ff5c07c85725 100644 --- a/test/e2e/app-dir/app/app/link-hard-push/[id]/page.js +++ b/test/e2e/app-dir/app/app/link-hard-push/[id]/page.js @@ -1,7 +1,8 @@ import Link from 'next/link' import { nanoid } from 'nanoid' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params const other = params.id === '123' ? '456' : '123' return ( <> diff --git a/test/e2e/app-dir/app/app/link-hard-replace/[id]/page.js b/test/e2e/app-dir/app/app/link-hard-replace/[id]/page.js index 6f69c10520d12..03a5877dd1620 100644 --- a/test/e2e/app-dir/app/app/link-hard-replace/[id]/page.js +++ b/test/e2e/app-dir/app/app/link-hard-replace/[id]/page.js @@ -1,7 +1,8 @@ import Link from 'next/link' import { nanoid } from 'nanoid' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params const other = params.id === '123' ? '456' : '123' return ( <> diff --git a/test/e2e/app-dir/app/app/loading-bug/[categorySlug]/page.js b/test/e2e/app-dir/app/app/loading-bug/[categorySlug]/page.js index 714616632e967..ed795b5505d8e 100644 --- a/test/e2e/app-dir/app/app/loading-bug/[categorySlug]/page.js +++ b/test/e2e/app-dir/app/app/loading-bug/[categorySlug]/page.js @@ -7,7 +7,8 @@ const fetchCategory = async (categorySlug) => { return categorySlug + 'abc' } -export default function Page({ params }) { +export default function Page(props) { + const params = use(props.params) const category = use(fetchCategory(params.categorySlug)) return
{category}
diff --git a/test/e2e/app-dir/app/app/param-and-query/[slug]/page.js b/test/e2e/app-dir/app/app/param-and-query/[slug]/page.js index 36a2c54250015..38a1b3e454b3d 100644 --- a/test/e2e/app-dir/app/app/param-and-query/[slug]/page.js +++ b/test/e2e/app-dir/app/app/param-and-query/[slug]/page.js @@ -1,13 +1,17 @@ 'use client' -export default async function Page({ params, searchParams }) { +import { use } from 'react' + +export default function Page(props) { + const searchParams = use(props.searchParams) + const params = use(props.params) return (

- hello from /param-and-query/{params.slug}?slug={(await searchParams).slug} + hello from /param-and-query/{params.slug}?slug={searchParams.slug}

) } diff --git a/test/e2e/app-dir/app/app/partial-match-[id]/page.js b/test/e2e/app-dir/app/app/partial-match-[id]/page.js index 33429192f2adc..95ba9eacc1add 100644 --- a/test/e2e/app-dir/app/app/partial-match-[id]/page.js +++ b/test/e2e/app-dir/app/app/partial-match-[id]/page.js @@ -1,7 +1,7 @@ -export default function DeploymentsPage(props) { +export default async function DeploymentsPage(props) { return ( <> -

hello from app/partial-match-[id]. ID is: {props.params.id}

+

hello from app/partial-match-[id]. ID is: {(await props.params).id}

) } diff --git a/test/e2e/app-dir/app/app/searchparams-normalization-bug/page.js b/test/e2e/app-dir/app/app/searchparams-normalization-bug/page.js index f2dfa3499ee8a..07b0663e79c5f 100644 --- a/test/e2e/app-dir/app/app/searchparams-normalization-bug/page.js +++ b/test/e2e/app-dir/app/app/searchparams-normalization-bug/page.js @@ -1,7 +1,7 @@ import Button from './client-component' import { headers } from 'next/headers' -export default function Page() { - const headerStore = headers() +export default async function Page() { + const headerStore = await headers() const headerValue = headerStore.get('test') || 'empty' return ( diff --git a/test/e2e/app-dir/custom-cache-control/app/app-ssg/[slug]/page.tsx b/test/e2e/app-dir/custom-cache-control/app/app-ssg/[slug]/page.tsx index 70eb489bb26b9..0975d48242451 100644 --- a/test/e2e/app-dir/custom-cache-control/app/app-ssg/[slug]/page.tsx +++ b/test/e2e/app-dir/custom-cache-control/app/app-ssg/[slug]/page.tsx @@ -8,7 +8,8 @@ export function generateStaticParams() { ] } -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return ( <>

/app-ssg/[slug]

diff --git a/test/e2e/app-dir/dynamic-data/fixtures/cache-scoped/app/connection/page.js b/test/e2e/app-dir/dynamic-data/fixtures/cache-scoped/app/connection/page.js index d15afc39b167a..37afc69fc6f5a 100644 --- a/test/e2e/app-dir/dynamic-data/fixtures/cache-scoped/app/connection/page.js +++ b/test/e2e/app-dir/dynamic-data/fixtures/cache-scoped/app/connection/page.js @@ -3,7 +3,7 @@ import { unstable_cache as cache } from 'next/cache' const cachedConnection = cache(async () => connection()) -export default async function Page({ searchParams }) { +export default async function Page(props) { await cachedConnection() return (
diff --git a/test/e2e/app-dir/dynamic-data/fixtures/main/app/force-dynamic/page.js b/test/e2e/app-dir/dynamic-data/fixtures/main/app/force-dynamic/page.js index cfee26df62328..a250df1d12e6c 100644 --- a/test/e2e/app-dir/dynamic-data/fixtures/main/app/force-dynamic/page.js +++ b/test/e2e/app-dir/dynamic-data/fixtures/main/app/force-dynamic/page.js @@ -17,7 +17,7 @@ export default async function Page({ searchParams }) {

headers

- {Array.from(headers().entries()).map(([key, value]) => { + {Array.from((await headers()).entries()).map(([key, value]) => { if (key === 'cookie') return null return (
diff --git a/test/e2e/app-dir/dynamic-data/fixtures/main/app/force-static/page.js b/test/e2e/app-dir/dynamic-data/fixtures/main/app/force-static/page.js index 6974704ef9b89..6cea00d189779 100644 --- a/test/e2e/app-dir/dynamic-data/fixtures/main/app/force-static/page.js +++ b/test/e2e/app-dir/dynamic-data/fixtures/main/app/force-static/page.js @@ -17,7 +17,7 @@ export default async function Page({ searchParams }) {

headers

- {Array.from(headers().entries()).map(([key, value]) => { + {Array.from((await headers()).entries()).map(([key, value]) => { if (key === 'cookie') return null return (
diff --git a/test/e2e/app-dir/dynamic-data/fixtures/main/app/top-level/page.js b/test/e2e/app-dir/dynamic-data/fixtures/main/app/top-level/page.js index a99598bd4dfa5..3cd347e46f6b5 100644 --- a/test/e2e/app-dir/dynamic-data/fixtures/main/app/top-level/page.js +++ b/test/e2e/app-dir/dynamic-data/fixtures/main/app/top-level/page.js @@ -15,7 +15,7 @@ export default async function Page({ searchParams }) {

headers

- {Array.from(headers().entries()).map(([key, value]) => { + {Array.from((await headers()).entries()).map(([key, value]) => { if (key === 'cookie') return null return (
diff --git a/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/connection/page.js b/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/connection/page.js index 79beaf4c4059b..b1375be951ebf 100644 --- a/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/connection/page.js +++ b/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/connection/page.js @@ -2,7 +2,7 @@ import { connection } from 'next/server' export const dynamic = 'error' -export default async function Page({ searchParams }) { +export default async function Page(props) { await connection() return (
diff --git a/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/cookies/page.js b/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/cookies/page.js index 754f3a4144709..9f1f160414e68 100644 --- a/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/cookies/page.js +++ b/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/cookies/page.js @@ -2,7 +2,7 @@ import { cookies } from 'next/headers' export const dynamic = 'error' -export default async function Page({ searchParams }) { +export default async function Page(props) { return (
diff --git a/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/headers/page.js b/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/headers/page.js index 1b3486550f816..674a2a30e9c3b 100644 --- a/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/headers/page.js +++ b/test/e2e/app-dir/dynamic-data/fixtures/require-static/app/headers/page.js @@ -11,7 +11,7 @@ export default async function Page() {

headers

- {Array.from(headers().entries()).map(([key, value]) => { + {Array.from((await headers()).entries()).map(([key, value]) => { if (key === 'cookie') return null return (
diff --git a/test/e2e/app-dir/dynamic-io-segment-configs/app/dynamic-params/[slug]/page.tsx b/test/e2e/app-dir/dynamic-io-segment-configs/app/dynamic-params/[slug]/page.tsx index 7df18935de8ac..fc72c63b68425 100644 --- a/test/e2e/app-dir/dynamic-io-segment-configs/app/dynamic-params/[slug]/page.tsx +++ b/test/e2e/app-dir/dynamic-io-segment-configs/app/dynamic-params/[slug]/page.tsx @@ -3,7 +3,8 @@ export async function generateStaticParams() { return [{ slug: 'foo' }, { slug: 'bar' }, { slug: 'baz' }] } -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params const { slug } = params return
Hello from {slug}
} diff --git a/test/e2e/app-dir/edge-route-rewrite/app/dynamic/[slug]/route.ts b/test/e2e/app-dir/edge-route-rewrite/app/dynamic/[slug]/route.ts index 70baa7bac15a8..2c42a54d45f1b 100644 --- a/test/e2e/app-dir/edge-route-rewrite/app/dynamic/[slug]/route.ts +++ b/test/e2e/app-dir/edge-route-rewrite/app/dynamic/[slug]/route.ts @@ -1,7 +1,8 @@ export const runtime = 'edge' export const dynamic = 'force-dynamic' -export function GET(req, { params }) { +export async function GET(req, props) { + const params = await props.params return new Response( `Hello from /app/dynamic/[slug]/route.ts. Slug: ${params.slug}` ) diff --git a/test/e2e/app-dir/errors/app/ssr-error-client-component/page.js b/test/e2e/app-dir/errors/app/ssr-error-client-component/page.js index 5b6bb43c2cc52..36a32fbfb4089 100644 --- a/test/e2e/app-dir/errors/app/ssr-error-client-component/page.js +++ b/test/e2e/app-dir/errors/app/ssr-error-client-component/page.js @@ -1,8 +1,8 @@ import ClientComp from './client-component' import { headers } from 'next/headers' -export default function Page() { +export default async function Page() { // Opt-in to SSR. - headers() + await headers() return } diff --git a/test/e2e/app-dir/front-redirect-issue/app/app-future/[lang]/(dashboard)/[teamSlug]/page.tsx b/test/e2e/app-dir/front-redirect-issue/app/app-future/[lang]/(dashboard)/[teamSlug]/page.tsx index 6559e4d85d7e1..a9222d01cb4fc 100644 --- a/test/e2e/app-dir/front-redirect-issue/app/app-future/[lang]/(dashboard)/[teamSlug]/page.tsx +++ b/test/e2e/app-dir/front-redirect-issue/app/app-future/[lang]/(dashboard)/[teamSlug]/page.tsx @@ -1,6 +1,7 @@ import { redirect, notFound } from 'next/navigation' -export default async function TeamDashboardPage({ params }: any) { +export default async function TeamDashboardPage(props: any) { + const params = await props.params await new Promise((resolve) => setTimeout(resolve, 1000)) const username = 'vercel-user' if (params.teamSlug === username) { diff --git a/test/e2e/app-dir/headers-static-bailout/app/page-with-headers/page.tsx b/test/e2e/app-dir/headers-static-bailout/app/page-with-headers/page.tsx index 00c49b0df56de..5e95772dcecc1 100644 --- a/test/e2e/app-dir/headers-static-bailout/app/page-with-headers/page.tsx +++ b/test/e2e/app-dir/headers-static-bailout/app/page-with-headers/page.tsx @@ -1,8 +1,8 @@ import { nanoid } from 'nanoid' import { headers } from 'next/headers' -export default function Page() { - headers() +export default async function Page() { + await headers() return ( <>

Dynamic Page

diff --git a/test/e2e/app-dir/hooks/app/hooks/use-draft-mode/page.js b/test/e2e/app-dir/hooks/app/hooks/use-draft-mode/page.js index bf91e2ee399f1..7ed8503a40f86 100644 --- a/test/e2e/app-dir/hooks/app/hooks/use-draft-mode/page.js +++ b/test/e2e/app-dir/hooks/app/hooks/use-draft-mode/page.js @@ -1,7 +1,7 @@ import { draftMode } from 'next/headers' -export default function Page() { - const { isEnabled } = draftMode() +export default async function Page() { + const { isEnabled } = await draftMode() return ( <> diff --git a/test/e2e/app-dir/hooks/app/hooks/use-headers/page.js b/test/e2e/app-dir/hooks/app/hooks/use-headers/page.js index c55642f17fa49..cceb5b01cb8df 100644 --- a/test/e2e/app-dir/hooks/app/hooks/use-headers/page.js +++ b/test/e2e/app-dir/hooks/app/hooks/use-headers/page.js @@ -1,7 +1,7 @@ import { headers } from 'next/headers' -export default function Page() { - const headersList = headers() +export default async function Page() { + const headersList = await headers() const hasHeader = headersList.get('x-use-headers') === 'value' const referer = headersList.get('referer') diff --git a/test/e2e/app-dir/layout-params/app/base/[param1]/[param2]/layout.tsx b/test/e2e/app-dir/layout-params/app/base/[param1]/[param2]/layout.tsx index a86d479a88905..97344427aa9e4 100644 --- a/test/e2e/app-dir/layout-params/app/base/[param1]/[param2]/layout.tsx +++ b/test/e2e/app-dir/layout-params/app/base/[param1]/[param2]/layout.tsx @@ -1,13 +1,14 @@ import React from 'react' import ShowParams from '../../../show-params' -export default async function Layout({ - children, - params, -}: { +export default async function Layout(props: { children: React.ReactNode params: Promise<{}> }) { + const params = await props.params + + const { children } = props + return (
diff --git a/test/e2e/app-dir/layout-params/app/base/[param1]/layout.tsx b/test/e2e/app-dir/layout-params/app/base/[param1]/layout.tsx index 6bbacf3a656e3..301f5dde4b60d 100644 --- a/test/e2e/app-dir/layout-params/app/base/[param1]/layout.tsx +++ b/test/e2e/app-dir/layout-params/app/base/[param1]/layout.tsx @@ -1,13 +1,14 @@ import React from 'react' import ShowParams from '../../show-params' -export default async function Layout({ - children, - params, -}: { +export default async function Layout(props: { children: React.ReactNode params: Promise<{}> }) { + const params = await props.params + + const { children } = props + return (
diff --git a/test/e2e/app-dir/layout-params/app/base/layout.tsx b/test/e2e/app-dir/layout-params/app/base/layout.tsx index 98b9f3ca2385f..98686e5ed57fe 100644 --- a/test/e2e/app-dir/layout-params/app/base/layout.tsx +++ b/test/e2e/app-dir/layout-params/app/base/layout.tsx @@ -1,13 +1,14 @@ import React from 'react' import ShowParams from '../show-params' -export default async function Layout({ - children, - params, -}: { +export default async function Layout(props: { children: React.ReactNode params: Promise<{}> }) { + const params = await props.params + + const { children } = props + return (
diff --git a/test/e2e/app-dir/layout-params/app/catchall/[...params]/layout.tsx b/test/e2e/app-dir/layout-params/app/catchall/[...params]/layout.tsx index 6bbacf3a656e3..301f5dde4b60d 100644 --- a/test/e2e/app-dir/layout-params/app/catchall/[...params]/layout.tsx +++ b/test/e2e/app-dir/layout-params/app/catchall/[...params]/layout.tsx @@ -1,13 +1,14 @@ import React from 'react' import ShowParams from '../../show-params' -export default async function Layout({ - children, - params, -}: { +export default async function Layout(props: { children: React.ReactNode params: Promise<{}> }) { + const params = await props.params + + const { children } = props + return (
diff --git a/test/e2e/app-dir/layout-params/app/layout.tsx b/test/e2e/app-dir/layout-params/app/layout.tsx index 8fdcdc6cb8b61..b21a3a451b17d 100644 --- a/test/e2e/app-dir/layout-params/app/layout.tsx +++ b/test/e2e/app-dir/layout-params/app/layout.tsx @@ -1,13 +1,14 @@ import React from 'react' import ShowParams from './show-params' -export default async function Layout({ - children, - params, -}: { +export default async function Layout(props: { children: React.ReactNode params: Promise<{}> }) { + const params = await props.params + + const { children } = props + return ( diff --git a/test/e2e/app-dir/layout-params/app/optional-catchall/[[...params]]/layout.tsx b/test/e2e/app-dir/layout-params/app/optional-catchall/[[...params]]/layout.tsx index 6bbacf3a656e3..301f5dde4b60d 100644 --- a/test/e2e/app-dir/layout-params/app/optional-catchall/[[...params]]/layout.tsx +++ b/test/e2e/app-dir/layout-params/app/optional-catchall/[[...params]]/layout.tsx @@ -1,13 +1,14 @@ import React from 'react' import ShowParams from '../../show-params' -export default async function Layout({ - children, - params, -}: { +export default async function Layout(props: { children: React.ReactNode params: Promise<{}> }) { + const params = await props.params + + const { children } = props + return (
diff --git a/test/e2e/app-dir/logging/app/headers/page.js b/test/e2e/app-dir/logging/app/headers/page.js index a4946331291b5..d442f5d122203 100644 --- a/test/e2e/app-dir/logging/app/headers/page.js +++ b/test/e2e/app-dir/logging/app/headers/page.js @@ -1,6 +1,6 @@ import { headers } from 'next/headers' -export default function Page() { - headers() +export default async function Page() { + await headers() return

{'headers()'}

} diff --git a/test/e2e/app-dir/next-after-app/app/nodejs/[id]/dynamic/page.js b/test/e2e/app-dir/next-after-app/app/nodejs/[id]/dynamic/page.js index d378b4fa795c4..4f2006302bcdb 100644 --- a/test/e2e/app-dir/next-after-app/app/nodejs/[id]/dynamic/page.js +++ b/test/e2e/app-dir/next-after-app/app/nodejs/[id]/dynamic/page.js @@ -4,7 +4,8 @@ import { cliLog } from '../../../../utils/log' const thing = cache(() => Symbol('cache me please')) -export default function Index({ params }) { +export default async function Index(props) { + const params = await props.params const valueFromRender = thing() after(() => { diff --git a/test/e2e/app-dir/next-after-app/app/nodejs/[id]/with-action/page.js b/test/e2e/app-dir/next-after-app/app/nodejs/[id]/with-action/page.js index 24dff11ddb61c..d001d57bd9af8 100644 --- a/test/e2e/app-dir/next-after-app/app/nodejs/[id]/with-action/page.js +++ b/test/e2e/app-dir/next-after-app/app/nodejs/[id]/with-action/page.js @@ -4,7 +4,8 @@ import { cliLog } from '../../../../utils/log' const thing = cache(() => Symbol('cache me please')) -export default function Index({ params }) { +export default async function Index(props) { + const params = await props.params const action = async () => { 'use server' diff --git a/test/e2e/app-dir/next-after-app/app/nodejs/[id]/with-metadata/page.js b/test/e2e/app-dir/next-after-app/app/nodejs/[id]/with-metadata/page.js index 696440e417d23..bebd69f2afc24 100644 --- a/test/e2e/app-dir/next-after-app/app/nodejs/[id]/with-metadata/page.js +++ b/test/e2e/app-dir/next-after-app/app/nodejs/[id]/with-metadata/page.js @@ -1,7 +1,8 @@ import { unstable_after as after } from 'next/server' import { cliLog } from '../../../../utils/log' -export function generateMetadata({ params }) { +export async function generateMetadata(props) { + const params = await props.params after(() => { cliLog({ source: '[metadata] /[id]/with-metadata', diff --git a/test/e2e/app-dir/next-after-app/app/nodejs/nested-after/page.js b/test/e2e/app-dir/next-after-app/app/nodejs/nested-after/page.js index e8f5c0b10eb3d..b80e86a7f3038 100644 --- a/test/e2e/app-dir/next-after-app/app/nodejs/nested-after/page.js +++ b/test/e2e/app-dir/next-after-app/app/nodejs/nested-after/page.js @@ -4,7 +4,7 @@ import { cliLog } from '../../../utils/log' const thing = cache(() => Symbol('cache me please')) -export default async function Index({ params }) { +export default async function Index(props) { await connection() const valueFromRender = thing() diff --git a/test/e2e/app-dir/not-found-default/app/(group)/group-dynamic/[id]/page.js b/test/e2e/app-dir/not-found-default/app/(group)/group-dynamic/[id]/page.js index f28071f5be5b5..edeff78612fee 100644 --- a/test/e2e/app-dir/not-found-default/app/(group)/group-dynamic/[id]/page.js +++ b/test/e2e/app-dir/not-found-default/app/(group)/group-dynamic/[id]/page.js @@ -1,6 +1,7 @@ import { notFound } from 'next/navigation' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params if (params.id === '404') { notFound() } diff --git a/test/e2e/app-dir/not-found/basic/app/dynamic-layout-without-not-found/[id]/page.js b/test/e2e/app-dir/not-found/basic/app/dynamic-layout-without-not-found/[id]/page.js index 9618e36735897..8638f5df50c1b 100644 --- a/test/e2e/app-dir/not-found/basic/app/dynamic-layout-without-not-found/[id]/page.js +++ b/test/e2e/app-dir/not-found/basic/app/dynamic-layout-without-not-found/[id]/page.js @@ -3,7 +3,11 @@ import { notFound } from 'next/navigation' // avoid static generation to fill the dynamic params export const dynamic = 'force-dynamic' -export default function Page({ params: { id } }) { +export default async function Page(props) { + const params = await props.params + + const { id } = params + if (id === '404') { notFound() } diff --git a/test/e2e/app-dir/not-found/basic/app/dynamic/[id]/page.js b/test/e2e/app-dir/not-found/basic/app/dynamic/[id]/page.js index bc4249f9d5967..ec018524b925e 100644 --- a/test/e2e/app-dir/not-found/basic/app/dynamic/[id]/page.js +++ b/test/e2e/app-dir/not-found/basic/app/dynamic/[id]/page.js @@ -3,7 +3,11 @@ import { notFound } from 'next/navigation' // avoid static generation to fill the dynamic params export const dynamic = 'force-dynamic' -export default function Page({ params: { id } }) { +export default async function Page(props) { + const params = await props.params + + const { id } = params + if (id === '404') { notFound() } diff --git a/test/e2e/app-dir/not-found/basic/app/error-boundary/nested/[dynamic]/page.js b/test/e2e/app-dir/not-found/basic/app/error-boundary/nested/[dynamic]/page.js index 623218d0e366b..5f034cc5f4635 100644 --- a/test/e2e/app-dir/not-found/basic/app/error-boundary/nested/[dynamic]/page.js +++ b/test/e2e/app-dir/not-found/basic/app/error-boundary/nested/[dynamic]/page.js @@ -1,7 +1,8 @@ import { notFound } from 'next/navigation' import React from 'react' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params if (params.dynamic === 'trigger-not-found') { notFound() } diff --git a/test/e2e/app-dir/not-found/group-route-root-not-found/app/(group)/group-dynamic/[id]/page.js b/test/e2e/app-dir/not-found/group-route-root-not-found/app/(group)/group-dynamic/[id]/page.js index 0f514527eb10c..68afd0b833b94 100644 --- a/test/e2e/app-dir/not-found/group-route-root-not-found/app/(group)/group-dynamic/[id]/page.js +++ b/test/e2e/app-dir/not-found/group-route-root-not-found/app/(group)/group-dynamic/[id]/page.js @@ -2,7 +2,8 @@ import { notFound } from 'next/navigation' export const dynamic = 'force-dynamic' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params if (params.id === '404') { notFound() } diff --git a/test/e2e/app-dir/parallel-routes-and-interception/app/(group)/intercepting-parallel-modal/[username]/@modal/default.js b/test/e2e/app-dir/parallel-routes-and-interception/app/(group)/intercepting-parallel-modal/[username]/@modal/default.js index a6a4d62eae872..88a733f86e3ed 100644 --- a/test/e2e/app-dir/parallel-routes-and-interception/app/(group)/intercepting-parallel-modal/[username]/@modal/default.js +++ b/test/e2e/app-dir/parallel-routes-and-interception/app/(group)/intercepting-parallel-modal/[username]/@modal/default.js @@ -1,3 +1,3 @@ -export default function Page({ params }) { +export default function Page(props) { return
default modal slot
} diff --git a/test/e2e/app-dir/parallel-routes-catchall-default/app/[locale]/nested/[foo]/[bar]/@slot/[baz]/page.tsx b/test/e2e/app-dir/parallel-routes-catchall-default/app/[locale]/nested/[foo]/[bar]/@slot/[baz]/page.tsx index 6078f8edee1d1..1cfe465cbed24 100644 --- a/test/e2e/app-dir/parallel-routes-catchall-default/app/[locale]/nested/[foo]/[bar]/@slot/[baz]/page.tsx +++ b/test/e2e/app-dir/parallel-routes-catchall-default/app/[locale]/nested/[foo]/[bar]/@slot/[baz]/page.tsx @@ -1,3 +1,3 @@ -export default function Page({ params }) { +export default function Page(props) { return
/[locale]/nested/[foo]/[bar]/@slot/[baz]/page.tsx
} diff --git a/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot0/[baz]/page.tsx b/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot0/[baz]/page.tsx index 20352333680b3..f6550acdf7189 100644 --- a/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot0/[baz]/page.tsx +++ b/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot0/[baz]/page.tsx @@ -1,3 +1,3 @@ -export default function Page({ params }) { +export default function Page(props) { return
/[locale]/nested/[foo]/[bar]/@slot0/[baz]/page.tsx
} diff --git a/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot0/default.tsx b/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot0/default.tsx index 00a1761e9ed43..08411c06317f7 100644 --- a/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot0/default.tsx +++ b/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot0/default.tsx @@ -1,3 +1,3 @@ -export default function Page({ params }) { +export default function Page(props) { return
/[locale]/nested/[foo]/[bar]/@slot0/default.tsx
} diff --git a/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot1/[baz]/[qux]/page.tsx b/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot1/[baz]/[qux]/page.tsx index e7fa85b2758c4..1c318b0536ea6 100644 --- a/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot1/[baz]/[qux]/page.tsx +++ b/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot1/[baz]/[qux]/page.tsx @@ -1,3 +1,3 @@ -export default function Page({ params }) { +export default function Page(props) { return
/[locale]/nested/[foo]/[bar]/@slot1/[baz]/[qux]/page.tsx
} diff --git a/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot1/[baz]/page.tsx b/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot1/[baz]/page.tsx index 689772ea5aedb..3b4b0f1328bde 100644 --- a/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot1/[baz]/page.tsx +++ b/test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/app/[locale]/nested/[foo]/[bar]/@slot1/[baz]/page.tsx @@ -1,3 +1,3 @@ -export default function Page({ params }) { +export default function Page(props) { return
/[locale]/nested/[foo]/[bar]/@slot1/[baz]/page.tsx
} diff --git a/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot0/bar/page.tsx b/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot0/bar/page.tsx index 274474eb60c7d..ea33ff24c0f47 100644 --- a/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot0/bar/page.tsx +++ b/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot0/bar/page.tsx @@ -1,3 +1,3 @@ -export default function Page({ params }) { +export default function Page(props) { return
/[locale]/nested/@slot0/bar/page.tsx
} diff --git a/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot0/foo/page.tsx b/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot0/foo/page.tsx index 5467ec6427799..86a80719cfcde 100644 --- a/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot0/foo/page.tsx +++ b/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot0/foo/page.tsx @@ -1,3 +1,3 @@ -export default function Page({ params }) { +export default function Page(props) { return
/[locale]/nested/@slot0/foo/page.tsx
} diff --git a/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot1/baz/page.tsx b/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot1/baz/page.tsx index f82a2c5db676f..333cf5ec873b2 100644 --- a/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot1/baz/page.tsx +++ b/test/e2e/app-dir/parallel-routes-catchall-slotted-non-catchalls/app/[locale]/nested/@slot1/baz/page.tsx @@ -1,3 +1,3 @@ -export default function Page({ params }) { +export default function Page(props) { return
/[locale]/nested/@slot1/baz/page.tsx
} diff --git a/test/e2e/app-dir/parallel-routes-revalidation/app/dynamic-refresh/[dynamic]/@modal/(.)login/page.tsx b/test/e2e/app-dir/parallel-routes-revalidation/app/dynamic-refresh/[dynamic]/@modal/(.)login/page.tsx index ad8a4c280bd52..3296952a5f742 100644 --- a/test/e2e/app-dir/parallel-routes-revalidation/app/dynamic-refresh/[dynamic]/@modal/(.)login/page.tsx +++ b/test/e2e/app-dir/parallel-routes-revalidation/app/dynamic-refresh/[dynamic]/@modal/(.)login/page.tsx @@ -4,12 +4,14 @@ import { UpdateSearchParamsButton } from '../../../../components/UpdateSearchPar const getRandom = async () => Math.random() -export default async function Page({ params, searchParams }) { +export default async function Page(props) { + const searchParams = await props.searchParams + const params = await props.params const someProp = await getRandom() return ( -
{(await params).dynamic}
+
{params.dynamic}
Modal Page @@ -17,10 +19,7 @@ export default async function Page({ params, searchParams }) {
- +
) diff --git a/test/e2e/app-dir/parallel-routes-revalidation/app/dynamic-refresh/[dynamic]/page.tsx b/test/e2e/app-dir/parallel-routes-revalidation/app/dynamic-refresh/[dynamic]/page.tsx index 07a2856a5ef44..c92536645608f 100644 --- a/test/e2e/app-dir/parallel-routes-revalidation/app/dynamic-refresh/[dynamic]/page.tsx +++ b/test/e2e/app-dir/parallel-routes-revalidation/app/dynamic-refresh/[dynamic]/page.tsx @@ -1,8 +1,8 @@ import Link from 'next/link' import { UpdateSearchParamsButton } from '../../components/UpdateSearchParamsButton' -export default async function Home({ searchParams }) { - const sp = await searchParams +export default async function Home(props) { + const searchParams = await props.searchParams return (
@@ -11,7 +11,7 @@ export default async function Home({ searchParams }) {
Random # from Root Page: {Math.random()}
- +
) } diff --git a/test/e2e/app-dir/parallel-routes-revalidation/app/refreshing/@modal/(.)login/page.tsx b/test/e2e/app-dir/parallel-routes-revalidation/app/refreshing/@modal/(.)login/page.tsx index dac2630832c05..82dfbdb2359b2 100644 --- a/test/e2e/app-dir/parallel-routes-revalidation/app/refreshing/@modal/(.)login/page.tsx +++ b/test/e2e/app-dir/parallel-routes-revalidation/app/refreshing/@modal/(.)login/page.tsx @@ -4,7 +4,8 @@ import { UpdateSearchParamsButton } from '../../../components/UpdateSearchParams const getRandom = async () => Math.random() -export default async function Page({ searchParams }) { +export default async function Page(props) { + const searchParams = await props.searchParams const someProp = await getRandom() return ( @@ -16,10 +17,7 @@ export default async function Page({ searchParams }) {
- +
) diff --git a/test/e2e/app-dir/parallel-routes-revalidation/app/refreshing/page.tsx b/test/e2e/app-dir/parallel-routes-revalidation/app/refreshing/page.tsx index 68f5fb29b99c5..82075982d7705 100644 --- a/test/e2e/app-dir/parallel-routes-revalidation/app/refreshing/page.tsx +++ b/test/e2e/app-dir/parallel-routes-revalidation/app/refreshing/page.tsx @@ -1,7 +1,8 @@ import Link from 'next/link' import { UpdateSearchParamsButton } from '../components/UpdateSearchParamsButton' -export default async function Home({ searchParams }) { +export default async function Home(props) { + const searchParams = await props.searchParams return (
@@ -10,7 +11,7 @@ export default async function Home({ searchParams }) {
Random # from Root Page: {Math.random()}
- +
) } diff --git a/test/e2e/app-dir/ppr-full/app/dynamic-data/force-dynamic/page.jsx b/test/e2e/app-dir/ppr-full/app/dynamic-data/force-dynamic/page.jsx index d58e7bd96aa9e..59ce4604bd788 100644 --- a/test/e2e/app-dir/ppr-full/app/dynamic-data/force-dynamic/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/dynamic-data/force-dynamic/page.jsx @@ -4,7 +4,8 @@ import { ServerHtml } from '../../../components/server-html' export const dynamic = 'force-dynamic' -export default ({ searchParams }) => { +export default async (props) => { + const searchParams = await props.searchParams return ( <> diff --git a/test/e2e/app-dir/ppr-full/app/dynamic-data/force-static/page.jsx b/test/e2e/app-dir/ppr-full/app/dynamic-data/force-static/page.jsx index 47f57780e72bb..7b4d6e97b09c7 100644 --- a/test/e2e/app-dir/ppr-full/app/dynamic-data/force-static/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/dynamic-data/force-static/page.jsx @@ -5,7 +5,8 @@ import { ServerHtml } from '../../../components/server-html' export const dynamic = 'force-static' export const revalidate = 60 -export default ({ searchParams }) => { +export default async (props) => { + const searchParams = await props.searchParams return ( <> diff --git a/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/force-dynamic/page.jsx b/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/force-dynamic/page.jsx index 98ec3d0ac1e2d..d50918e635673 100644 --- a/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/force-dynamic/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/force-dynamic/page.jsx @@ -4,7 +4,8 @@ import { ServerHtml } from '../../../../components/server-html' export const dynamic = 'force-dynamic' -export default ({ searchParams }) => { +export default async (props) => { + const searchParams = await props.searchParams return ( <> diff --git a/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/force-static/page.jsx b/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/force-static/page.jsx index 4eec05d6e9b4b..353bec982dbb6 100644 --- a/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/force-static/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/force-static/page.jsx @@ -4,7 +4,8 @@ import { ServerHtml } from '../../../../components/server-html' export const dynamic = 'force-static' -export default ({ searchParams }) => { +export default async (props) => { + const searchParams = await props.searchParams return ( <> diff --git a/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/page.jsx b/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/page.jsx index 2a3a3f98a3b7f..5e7cd19c17095 100644 --- a/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/dynamic-data/incidental-postpone/page.jsx @@ -2,12 +2,12 @@ import { Suspense, unstable_postpone as postpone } from 'react' import { Optimistic } from '../../../components/optimistic' import { ServerHtml } from '../../../components/server-html' -export default ({ searchParams }) => { +export default (props) => { return ( <> - + diff --git a/test/e2e/app-dir/ppr-full/app/dynamic-data/page.jsx b/test/e2e/app-dir/ppr-full/app/dynamic-data/page.jsx index 509e2bd384b5f..2fb79364b8499 100644 --- a/test/e2e/app-dir/ppr-full/app/dynamic-data/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/dynamic-data/page.jsx @@ -2,12 +2,12 @@ import { Suspense } from 'react' import { Optimistic } from '../../components/optimistic' import { ServerHtml } from '../../components/server-html' -export default ({ searchParams }) => { +export default (props) => { return ( <> - + ) diff --git a/test/e2e/app-dir/ppr-full/app/dynamic/force-dynamic/nested/[slug]/page.jsx b/test/e2e/app-dir/ppr-full/app/dynamic/force-dynamic/nested/[slug]/page.jsx index 7295f69905892..5926fdd937001 100644 --- a/test/e2e/app-dir/ppr-full/app/dynamic/force-dynamic/nested/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/dynamic/force-dynamic/nested/[slug]/page.jsx @@ -7,7 +7,11 @@ export function generateStaticParams() { return [] } -export default ({ params: { slug } }) => { +export default async (props) => { + const params = await props.params + + const { slug } = params + return ( {children} diff --git a/test/e2e/app-dir/ppr-full/app/fallback/client/params/page/[slug]/page.jsx b/test/e2e/app-dir/ppr-full/app/fallback/client/params/page/[slug]/page.jsx index 9a53bb80b8240..0470609db7dac 100644 --- a/test/e2e/app-dir/ppr-full/app/fallback/client/params/page/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/fallback/client/params/page/[slug]/page.jsx @@ -1,6 +1,7 @@ import Dynamic from './dynamic' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return (
diff --git a/test/e2e/app-dir/ppr-full/app/fallback/dynamic/error/[slug]/page.jsx b/test/e2e/app-dir/ppr-full/app/fallback/dynamic/error/[slug]/page.jsx index 592773a9a0bd5..9eb251aa21fc6 100644 --- a/test/e2e/app-dir/ppr-full/app/fallback/dynamic/error/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/fallback/dynamic/error/[slug]/page.jsx @@ -1,6 +1,7 @@ import { setTimeout } from 'timers/promises' -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params await setTimeout(1000) const { slug } = params diff --git a/test/e2e/app-dir/ppr-full/app/fallback/dynamic/params/[slug]/page.jsx b/test/e2e/app-dir/ppr-full/app/fallback/dynamic/params/[slug]/page.jsx index bec77bf1db5bd..bbb3f0d30caec 100644 --- a/test/e2e/app-dir/ppr-full/app/fallback/dynamic/params/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/fallback/dynamic/params/[slug]/page.jsx @@ -2,13 +2,14 @@ import { headers } from 'next/headers' import { Suspense } from 'react' import { setTimeout } from 'timers/promises' -function Dynamic() { - const agent = headers().get('user-agent') +async function Dynamic() { + const agent = (await headers()).get('user-agent') return
{agent}
} -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params await setTimeout(1000) const { slug } = params diff --git a/test/e2e/app-dir/ppr-full/app/fallback/nested/params/[...slug]/page.jsx b/test/e2e/app-dir/ppr-full/app/fallback/nested/params/[...slug]/page.jsx index 9ff830ad21f79..441f074f8610e 100644 --- a/test/e2e/app-dir/ppr-full/app/fallback/nested/params/[...slug]/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/fallback/nested/params/[...slug]/page.jsx @@ -1,6 +1,7 @@ import { setTimeout } from 'timers/promises' -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params await setTimeout(1000) return
{params.slug.join('/')}
diff --git a/test/e2e/app-dir/ppr-full/app/fallback/params/[slug]/page.jsx b/test/e2e/app-dir/ppr-full/app/fallback/params/[slug]/page.jsx index ddc915c696731..00e16814f0752 100644 --- a/test/e2e/app-dir/ppr-full/app/fallback/params/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/fallback/params/[slug]/page.jsx @@ -1,6 +1,7 @@ import { setTimeout } from 'timers/promises' -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params await setTimeout(1000) return
{params.slug}
diff --git a/test/e2e/app-dir/ppr-full/app/loading/[slug]/page.jsx b/test/e2e/app-dir/ppr-full/app/loading/[slug]/page.jsx index 027d39da1c2b6..d8518345b228d 100644 --- a/test/e2e/app-dir/ppr-full/app/loading/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/loading/[slug]/page.jsx @@ -3,7 +3,11 @@ import { Dynamic } from '../../../components/dynamic' export const revalidate = 60 -export default ({ params: { slug } }) => { +export default async (props) => { + const params = await props.params + + const { slug } = params + return ( }> diff --git a/test/e2e/app-dir/ppr-full/app/nested/[slug]/page.jsx b/test/e2e/app-dir/ppr-full/app/nested/[slug]/page.jsx index fec0c0923d427..52958d9169270 100644 --- a/test/e2e/app-dir/ppr-full/app/nested/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/nested/[slug]/page.jsx @@ -3,7 +3,11 @@ import { Dynamic } from '../../../components/dynamic' export const revalidate = 60 -export default ({ params: { slug } }) => { +export default async (props) => { + const params = await props.params + + const { slug } = params + return ( }> diff --git a/test/e2e/app-dir/ppr-full/app/no-suspense/nested/[slug]/page.jsx b/test/e2e/app-dir/ppr-full/app/no-suspense/nested/[slug]/page.jsx index d7f48f3a26137..82f5bb47fb8e2 100644 --- a/test/e2e/app-dir/ppr-full/app/no-suspense/nested/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/no-suspense/nested/[slug]/page.jsx @@ -1,7 +1,11 @@ import React from 'react' import { Dynamic } from '../../../../components/dynamic' -export default ({ params: { slug } }) => { +export default async (props) => { + const params = await props.params + + const { slug } = params + return } diff --git a/test/e2e/app-dir/ppr-full/app/on-demand/[slug]/page.jsx b/test/e2e/app-dir/ppr-full/app/on-demand/[slug]/page.jsx index 289d8a9d63256..b502b635f3be4 100644 --- a/test/e2e/app-dir/ppr-full/app/on-demand/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr-full/app/on-demand/[slug]/page.jsx @@ -1,7 +1,11 @@ import React, { Suspense } from 'react' import { Dynamic } from '../../../components/dynamic' -export default ({ params: { slug } }) => { +export default async (props) => { + const params = await props.params + + const { slug } = params + return ( }> diff --git a/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/about/page.jsx b/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/about/page.jsx index 636270b79b6e9..9f500c2a9d4f3 100644 --- a/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/about/page.jsx +++ b/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/about/page.jsx @@ -2,6 +2,10 @@ import { TestPage } from '../../../components/page' export const experimental_ppr = true -export default function Page({ params: { locale } }) { +export default async function Page(props) { + const params = await props.params + + const { locale } = params + return } diff --git a/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/layout.jsx b/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/layout.jsx index b55a7751211b5..9a9315cdfd84e 100644 --- a/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/layout.jsx +++ b/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/layout.jsx @@ -4,7 +4,13 @@ export async function generateStaticParams() { return locales.map((locale) => ({ locale })) } -export default function Layout({ children, params: { locale } }) { +export default async function Layout(props) { + const params = await props.params + + const { locale } = params + + const { children } = props + return ( {children} diff --git a/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/page.jsx b/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/page.jsx index abd02b646d87f..873daac7a1ae7 100644 --- a/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/page.jsx +++ b/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/page.jsx @@ -1,5 +1,9 @@ import { TestPage } from '../../components/page' -export default function Page({ params: { locale } }) { +export default async function Page(props) { + const params = await props.params + + const { locale } = params + return } diff --git a/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/static/page.jsx b/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/static/page.jsx index 4fa3febf3a837..05e2f78bd9a0f 100644 --- a/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/static/page.jsx +++ b/test/e2e/app-dir/ppr-navigations/incremental/app/[locale]/static/page.jsx @@ -1,5 +1,9 @@ import { TestPage } from '../../../components/page' -export default function Page({ params: { locale } }) { +export default async function Page(props) { + const params = await props.params + + const { locale } = params + return } diff --git a/test/e2e/app-dir/ppr-navigations/prefetch-navigation/app/catch-all/[[...slug]]/page.tsx b/test/e2e/app-dir/ppr-navigations/prefetch-navigation/app/catch-all/[[...slug]]/page.tsx index 0f6ceaf66b023..a60418f2e1e6f 100644 --- a/test/e2e/app-dir/ppr-navigations/prefetch-navigation/app/catch-all/[[...slug]]/page.tsx +++ b/test/e2e/app-dir/ppr-navigations/prefetch-navigation/app/catch-all/[[...slug]]/page.tsx @@ -2,7 +2,8 @@ import { unstable_noStore } from 'next/cache' import Link from 'next/link' import React, { Suspense } from 'react' -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params return (

Params: {JSON.stringify(params)}

diff --git a/test/e2e/app-dir/ppr-navigations/search-params/app/page.tsx b/test/e2e/app-dir/ppr-navigations/search-params/app/page.tsx index 0a537075c1d41..6907812891cbc 100644 --- a/test/e2e/app-dir/ppr-navigations/search-params/app/page.tsx +++ b/test/e2e/app-dir/ppr-navigations/search-params/app/page.tsx @@ -2,11 +2,10 @@ import Link from 'next/link' type AnySearchParams = { [key: string]: string | Array | undefined } -export default async function Page({ - searchParams, -}: { +export default async function Page(props: { searchParams: Promise }) { + const searchParams = await props.searchParams const hasParams = Object.keys(searchParams).length > 0 return ( <> diff --git a/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/about/page.jsx b/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/about/page.jsx index c9bf684ee8673..a9f03d649ac0f 100644 --- a/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/about/page.jsx +++ b/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/about/page.jsx @@ -1,5 +1,9 @@ import { TestPage } from '../../../components/page' -export default function Page({ params: { locale } }) { +export default async function Page(props) { + const params = await props.params + + const { locale } = params + return } diff --git a/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/layout.jsx b/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/layout.jsx index b55a7751211b5..9a9315cdfd84e 100644 --- a/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/layout.jsx +++ b/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/layout.jsx @@ -4,7 +4,13 @@ export async function generateStaticParams() { return locales.map((locale) => ({ locale })) } -export default function Layout({ children, params: { locale } }) { +export default async function Layout(props) { + const params = await props.params + + const { locale } = params + + const { children } = props + return ( {children} diff --git a/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/page.jsx b/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/page.jsx index abd02b646d87f..873daac7a1ae7 100644 --- a/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/page.jsx +++ b/test/e2e/app-dir/ppr-navigations/simple/app/[locale]/page.jsx @@ -1,5 +1,9 @@ import { TestPage } from '../../components/page' -export default function Page({ params: { locale } }) { +export default async function Page(props) { + const params = await props.params + + const { locale } = params + return } diff --git a/test/e2e/app-dir/ppr/app/no-suspense/node/gsp/[slug]/page.jsx b/test/e2e/app-dir/ppr/app/no-suspense/node/gsp/[slug]/page.jsx index f801cb021f18b..a7e4ffe221ba5 100644 --- a/test/e2e/app-dir/ppr/app/no-suspense/node/gsp/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr/app/no-suspense/node/gsp/[slug]/page.jsx @@ -2,7 +2,8 @@ export function generateStaticParams() { return [{ slug: 'foo' }] } -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params return (
Hello World! diff --git a/test/e2e/app-dir/ppr/app/suspense/node/gsp/[slug]/page.jsx b/test/e2e/app-dir/ppr/app/suspense/node/gsp/[slug]/page.jsx index 8fd1559f4b37b..a7157e3c8651e 100644 --- a/test/e2e/app-dir/ppr/app/suspense/node/gsp/[slug]/page.jsx +++ b/test/e2e/app-dir/ppr/app/suspense/node/gsp/[slug]/page.jsx @@ -4,7 +4,8 @@ export function generateStaticParams() { return [{ slug: 'foo' }] } -export default async function Page({ params }) { +export default async function Page(props) { + const params = await props.params return (
Hello World! diff --git a/test/e2e/app-dir/rewrites-redirects/app/[...params]/page.tsx b/test/e2e/app-dir/rewrites-redirects/app/[...params]/page.tsx index c6b42b1965224..45b1a4580e971 100644 --- a/test/e2e/app-dir/rewrites-redirects/app/[...params]/page.tsx +++ b/test/e2e/app-dir/rewrites-redirects/app/[...params]/page.tsx @@ -1,8 +1,7 @@ -export default async function Page({ - params, -}: { +export default async function Page(props: { params: Promise<{ params: Array }> }) { + const params = await props.params const { params: catchAllParams } = await params return (
diff --git a/test/e2e/app-dir/router-stuck-dynamic-static-segment/app/[slug]/page.tsx b/test/e2e/app-dir/router-stuck-dynamic-static-segment/app/[slug]/page.tsx index 71aa0623bdcc8..81b549cd04629 100644 --- a/test/e2e/app-dir/router-stuck-dynamic-static-segment/app/[slug]/page.tsx +++ b/test/e2e/app-dir/router-stuck-dynamic-static-segment/app/[slug]/page.tsx @@ -1,6 +1,7 @@ import Link from 'next/link' -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return (

Visiting page {params.slug}

diff --git a/test/e2e/app-dir/router-stuck-dynamic-static-segment/app/blog/[slug]/page.tsx b/test/e2e/app-dir/router-stuck-dynamic-static-segment/app/blog/[slug]/page.tsx index ac82ad80adb71..76b46bd7c4fb1 100644 --- a/test/e2e/app-dir/router-stuck-dynamic-static-segment/app/blog/[slug]/page.tsx +++ b/test/e2e/app-dir/router-stuck-dynamic-static-segment/app/blog/[slug]/page.tsx @@ -1,6 +1,7 @@ import Link from 'next/link' -export default function Blog({ params }) { +export default async function Blog(props) { + const params = await props.params return (

Blog post {params.slug}

diff --git a/test/e2e/app-dir/rsc-basic/app/page.js b/test/e2e/app-dir/rsc-basic/app/page.js index e641a48827bca..f709ccf951c5b 100644 --- a/test/e2e/app-dir/rsc-basic/app/page.js +++ b/test/e2e/app-dir/rsc-basic/app/page.js @@ -4,8 +4,8 @@ import { headers } from 'next/headers' const envVar = process.env.ENV_VAR_TEST const headerKey = 'x-next-test-client' -export default function Index() { - const headersList = headers() +export default async function Index() { + const headersList = await headers() const header = headersList.get(headerKey) return ( diff --git a/test/e2e/app-dir/shallow-routing/app/(shallow)/dynamic/[id]/page.tsx b/test/e2e/app-dir/shallow-routing/app/(shallow)/dynamic/[id]/page.tsx index 6d94f0bb1bcdd..8000d287b3daf 100644 --- a/test/e2e/app-dir/shallow-routing/app/(shallow)/dynamic/[id]/page.tsx +++ b/test/e2e/app-dir/shallow-routing/app/(shallow)/dynamic/[id]/page.tsx @@ -1,4 +1,5 @@ -export default function Page({ params }) { +export default async function Page(props) { + const params = await props.params return ( <>

Page ID: {params.id}

diff --git a/test/integration/app-dynamic-error/app/dynamic-error/page.js b/test/integration/app-dynamic-error/app/dynamic-error/page.js index 584c0363072e6..d03db5f930534 100644 --- a/test/integration/app-dynamic-error/app/dynamic-error/page.js +++ b/test/integration/app-dynamic-error/app/dynamic-error/page.js @@ -2,8 +2,8 @@ import { headers } from 'next/headers' export const dynamic = 'error' -export default function Page() { - headers() +export default async function Page() { + await headers() return ( <>

/dynamic-error