Create a folder like `app/posts/[id]/page.tsx`. In a Server Component, read it from the `params` prop; in a Client Component you can use `useParams()`.
export default function Page({ params }: { params: { id: string } }) {
return <div>Post id: {params.id}</div>
}In the App Router, folder names define routes:
In a Server Component `page.tsx`, Next passes params via the `params` prop.
// app/posts/[id]/page.tsx
export default function Page({ params }: { params: { id: string } }) {
return <div>Post id: {params.id}</div>
}Client-side reading:
'use client'
import { useParams } from 'next/navigation'
export default function PostClient() {
const params = useParams<{ id: string }>()
return <div>{params.id}</div>
}For SSG/ISR you can precompute dynamic params with `generateStaticParams()`.