SP

Sumitkumar Pandit

BlogNext.js

Next.js

Next.js 15 App Router - Real-World Lessons

Three production apps on App Router later, here are the opinions I have formed. Hot takes on Server Components, Suspense, Metadata API and caching.

SP
Sumitkumar Pandit
May 15, 2025 8 min

After shipping three production apps on Next.js 15 App Router this year, I have a list of opinions - some hot, some lukewarm. Here they are.

Server Components are great. Until they aren't.

Default to server components, but be honest about the moment your tree needs interactivity. Lifting state high in a server tree is painful. Just mark the boundary "use client" and move on.

Streaming + Suspense actually delivers

Wrap slow data with Suspense boundaries. The perceived performance gain is enormous - your above-the-fold renders instantly while the heavy stuff streams in.

The metadata API is criminally underused

Per-page generateMetadata with dynamic OG images is one of the highest-ROI features in the framework. Set it up once and reap SEO benefits forever.

Caching is the hardest part

Next 15 simplified things, but you still need to understand fetch caching, route segment config and revalidation. Read the docs twice.

Next.jsReactPerformance