Error: Route '...' used `params.slug`. `params` should be awaited before using its properties.

I Next.js 15 är `params` ett löfte som måste awaitas innan du kan läsa dess properties.

Förklaring

I Next.js 15 ändrades params i dynamiska route-filer till att vara ett Promise. Det är en breaking change från Next.js 14 och tidigare, där params var ett vanligt objekt. Väntar du inte på params med await läser du egenskaper på ett Promise-objekt, inte på de faktiska route-parametrarna.

Ändringen gjordes för att Next.js ska kunna optimera när och hur route-parametrar beräknas. I praktiken påverkar det alla dynamiska routes som använder params i page.js, layout.js, generateMetadata, och liknande filer.

Felet visas i utvecklingsläge som en tydlig varning och ger undefined om du läser params.slug utan att awaita.

Vanliga orsaker

Uppgradering från Next.js 14 till 15 utan att uppdatera dynamiska route-filer. params läses synkront utan await i en async-funktion.

Lösning

Lägg till await innan du destructurar params:

// Fel (Next.js 14-stil)
export default function Page({ params }) {
  const { slug } = params;
}

// Rätt (Next.js 15)
export default async function Page({ params }) {
  const { slug } = await params;
}

Detsamma gäller generateMetadata, generateStaticParams, och layout-filer.