DEV Community

Cover image for πŸš€ Next.js 15.3.4: PPR and Why It’s Even More Powerful Now
Neel
Neel

Posted on Edited on

πŸš€ Next.js 15.3.4: PPR and Why It’s Even More Powerful Now

βœ… How It Works

Your page renders top-down (like a waterfall).

As soon as some HTML is ready (like header/nav), it’s flushed to the browser.

Components that are still loading (like awaited data or suspense boundaries) are rendered after and streamed later.

It behaves like a hybrid between SSR and React Server Components with Suspense.

βœ… What 15.3.4 Brings to PPR

> 🦾 Build-time improvements with Turbopack

  • next build --turbopack is now available in alpha for production builds, delivering major build-time speedupsβ€”28% faster on 4-core, up to 83% on high-end machines

  • While still alpha, it's a massive leap forward for rapid iteration in staging environments.

> πŸ” Better observability & routing

  • Client instrumentation hook lets you initialize analytics or performance tracking before client code loads

  • Navigation hooks (onNavigate, useLinkStatus) give you granular control over route changes, enabling improved loading states and UX

These enhancements directly support PPR by giving you both a static shell and dynamic loading control, with fewer toolchain limitations.

πŸ”„ PPR + Next.js 15.3.4 vs CSR, SSR, SSG, ISR

| Strategy | Build Time | Runtime                           | Latest with 15.3.4                  |
| -------- | ---------- | --------------------------------  | --------------------------------
| **CSR**  | ❌        | βœ…                                | No Vercel support                
| **SSR**  | ❌        | βœ…                                | Fully supported              
| **SSG**  | βœ…        | ❌                                | Stable via SSG & ISR              
| **ISR**  | βœ…        | βœ…                                | Best static/dynamic mix     
| **PPR**  | βœ…        | βœ… (+streaming & instrumentation) | *Enhanced by React 19 readiness*

Enter fullscreen mode Exit fullscreen mode

> Why it matters:

  • Streamed PPR benefits from React¹⁹ and React 18+ streaming APIs supported in v15.3.4.

  • Your app now gets both static safety and dynamic flexibility, with improved DX and tooling.

πŸ› οΈ Using PPR in 15.3.4

// app/page.tsx β€” static shell + dynamic feed
import StaticLayout from './StaticLayout';
import DynamicFeed from './DynamicFeed';

export default function Page() {
  return (
    <>
      <StaticLayout />
      <DynamicFeed /> {/* has dynamic = 'force-dynamic' */}
    </>
  );
}
Enter fullscreen mode Exit fullscreen mode
// components/DynamicFeed.tsx
export const dynamic = 'force-dynamic';

export default async function DynamicFeed() {
  const data = await fetch(
    'https://api.example.com/feed',
    { cache: 'no-store' }
  ).then(r => r.json());
  return <Feed data={data} />;
}
Enter fullscreen mode Exit fullscreen mode
// instrumentation-client.ts
performance.mark('app-init');
Enter fullscreen mode Exit fullscreen mode
  • Use cache: 'force-static' for static, force-dynamic for runtime components.
  • Stream dynamic parts via React Suspense.
  • Add instrumentation-client.ts for observability.
  • Use onNavigate hooks to manage loading UIs.

> 🎯 KeyPoints - 15.3.4

  • βœ… Latest stable version is 15.3.4 as of Juneβ€―2025
  • πŸ› οΈ Full support for Turbopack builds in alpha.
  • 🧠 Enhanced routing & instrumentation APIs.
  • πŸš€ PPR gets even better streaming, control, and observability.
  • πŸ€– Built on React 19 readinessβ€”prepares for the future.

Top comments (0)