Partial Prerendering in Next.js 16, Explained on a Real Page
What partial prerendering does to a real Next.js page: what becomes static HTML, what streams, where the Suspense boundaries go, and the build errors to expect.
Writing
20 write-ups from production, newest first. Each one is a problem hit on a real project and how it was diagnosed and fixed.
What partial prerendering does to a real Next.js page: what becomes static HTML, what streams, where the Suspense boundaries go, and the build errors to expect.
Cache Components in Next.js 16 in practice: where use cache goes, how cacheLife profiles behave, when cacheTag earns its keep, and the build errors.
Next.js 16 typedRoutes throwing 'string is not assignable to Route' on dynamic Link hrefs? Why the new validator rejects template strings and the fix.
Next.js 16.3 typedRoutes throwing a TypeError on catch-all dynamic routes after the upgrade? Here is why the segment tuple type fails and the helper fix.
Partial Prerendering in Next.js 16 rendering pages fully dynamic? Here is why searchParams kills the static shell and the Suspense pattern that fixes it.
Next.js 16 revalidatePath not invalidating cache from a Route Handler? Here is why the path argument mismatch happens and the canonical fix that holds.
Next.js 16.2 typedRoutes throwing 'Route is not a known route' errors on Link href after upgrade? Here is why the type narrows and how to satisfy the checker.
Next.js 16 build failing with 'Type string is not assignable to type Route' on Link href? Here is why typedRoutes got stricter and the migration that compiles.
Next.js 16 Partial Prerendering crashes when you call cookies() in a layout? Why the static shell evaluates first, and the suspense boundary that fixes it.
Next.js 16.2 searchParams returning a Promise and breaking your pagination or filter components? Here is the await pattern that fixes the TypeError fast.
Next.js 16 forbidden() and unauthorized() helpers returning 500 in production? You need forbidden.tsx and unauthorized.tsx files in the route segment.
Next.js 16.2 default error page showing in production? Fix misplaced error boundaries, redirect failures, and fallback UI leaks before users see them.
Next.js 16 parallel routes returning 404 only after a production build? Fix default.tsx slots, route group conflicts, and async params with working code.
Next.js 16 throwing 'cookies() should be awaited' inside your App Router route handlers? Fix the async API and silent Set-Cookie failure with working code.
Next.js parallel routes throwing a 404 on hard refresh in production? Fix the missing default.tsx slot, layout fallback, and App Router gotcha with code.
Next.js 16 generateStaticParams returning data but not building static pages? The four real causes and how to force prerender at build time, with code.
Next.js cookies() throwing TypeError after upgrading to 15 or 16? Fix the async API change in Server Components, Server Actions, and Route Handlers fast.
Next.js 16 replaces middleware.ts with proxy.ts and breaks redirects, rewrites, and matchers on upgrade. Here is the migration path that actually works.
Next.js ViewTransition not animating in the App Router? The real fix for flashes, full reloads, broken shared elements, and transitions that never start.
Next.js 16 throwing 'params is a Promise' TypeError in dynamic routes after upgrade? Here is the root cause and migration fix with working code.
Fixed price for a defined scope, on live sites, with a rollback path. Agencies and in-house teams welcome.
Hire me for App Router