params передаётся в page, layout, route и generateMetadata. В Next 15 это Promise — нужен await. Значения всегда строки (или массивы строк); coercion нет: /posts/42 даёт '42', не 42.
Разбор
Какие param values pre-render на build — через generateStaticParams (наследник getStaticPaths в App Router). Что вернул — built statically; запросы для значений вне списка по умолчанию server-render на первом request и затем cache — аналог fallback: 'blocking'. Контроль через dynamicParams:
exportconst dynamicParams = false; // params NOT in generateStaticParams → 404
Итог
Dynamic routes = string params + generateStaticParams для SSG; dynamicParams задаёт поведение для «хвоста» URL.
Next.js: Dynamic и catch-all routes — как это работает на практике · Sobeso