Next.js 15+ makes params a Promise so the page can render and stream immediately without waiting for the dynamic segment to resolve.
You pass the unresolved Promise down and wrap the child in <Suspense> because:
The parent stays synchronous → starts streaming right away.
The child (async SuspendedPage) does await params → suspends safely.
React shows the Suspense fallback until the promise resolves, then streams in the real content.
That’s how Next.js achieves non-blocking, progressive rendering instead of waiting for everything upfront.