---
title: "params / searchParams types (next/route-params)"
description: "Since Next.js 15, `params` and `searchParams` are Promises, and their keys come from the route's dynamic segments ([id] → string, [...slug] → string[])."
url: http://localhost:4173/rules/next/route-params
updated: 2026-11-11
---

# params / searchParams types

> `next/route-params` is a vetd rule. It flags: params / searchParams types. It runs on every `check`, together with the TypeScript check.

| Fact | Value |
| --- | --- |
| Rule id | `next/route-params` |
| Severity | error |
| Group | Server and client boundaries |
| Tags | nextjs-16, correctness |

## Why it matters

Since Next.js 15, `params` and `searchParams` are Promises, and their keys come from the route's dynamic segments ([id] → string, [...slug] → string[]).

## How to fix it

Type them as `Promise<{ … }>` with exactly the route's segment names, or use the generated `PageProps<"/route">` helper.

## Credit

Based on work by:

- [Next.js team](https://nextjs.org): Made params and searchParams asynchronous in Next.js 15 and documents typing them as Promises, with PageProps helpers.

## References

- [page.js](https://nextjs.org/docs/app/api-reference/file-conventions/page), Next.js
- [Dynamic Route Segments](https://nextjs.org/docs/app/api-reference/file-conventions/dynamic-routes), Next.js
- [How to upgrade to version 15](https://nextjs.org/docs/app/guides/upgrading/version-15), Next.js
- [next-best-practices: Async patterns](https://github.com/vercel-labs/next-skills/blob/dc1de9caf7612d73f56a8dec3cb1bd6c9ec096b9/skills/next-best-practices/async-patterns.md), Vercel (vercel-labs/next-skills)

## See it

Demos in the vetd Lab:

- [Await request APIs](http://localhost:4173/lab/nextjs/await-request-apis)

## Related rules

- [`next/sync-dynamic-api`](http://localhost:4173/rules/next/sync-dynamic-api.md)

## Get this text from vetd

MCP: call `explain` with `{ "diagnosticId": "next/route-params" }`. CLI: `npx vetd explain next/route-params`.

---

[All 92 rules](http://localhost:4173/rules.md) · Previous: [`next/server-actions`](http://localhost:4173/rules/next/server-actions.md) · Next: [`next/unknown-route`](http://localhost:4173/rules/next/unknown-route.md)
