Next.js 15: What's New and Why It Matters

Today

Next.js 15 has officially landed with exciting updates that will change how we build modern web applications. From full React 19 support to game-changing performance improvements, this release is packed with features every developer should know about.

What's New in Next.js 15?

1. React 19 Support

Next.js 15 comes with full support for React 19, unlocking powerful new capabilities including improved Server Components, enhanced hooks, and better concurrent rendering.

// New React 19 hooks in Next.js 15
import { useActionState, useOptimistic } from 'react';
 
export default function FormComponent() {
  const [optimisticState, setOptimistic] = useOptimistic(initialState);
  
  return (
    <form>
      {/* Your form content */}
    </form>
  );
}

2. Async Request APIs

One of the biggest changes is that request-specific APIs like params, searchParams, headers, and cookies are now asynchronous. This enables better streaming and performance optimization.

// Before (Next.js 14)
export default function Page({ params }) {
  const id = params.id;
  return <div>{id}</div>;
}
 
// After (Next.js 15)
export default async function Page(props: {
  params: Promise<{ id: string }>;
}) {
  const params = await props.params;
  const id = params.id;
  return <div>{id}</div>;
}

This change enables partial prerendering and better concurrent features.

3. Turbopack Dev Mode (Stable)

Turbopack is now stable for local development, offering up to 76.7% faster cold starts compared to Webpack. This means:

# Automatically enabled in Next.js 15
npm run dev

4. New <Form> Component

Next.js 15 introduces a native <Form> component that extends HTML forms with built-in prefetching, client-side navigation, and progressive enhancement.

import Form from 'next/form';
 
export default function SearchPage() {
  return (
    <Form action="/search">
      <input name="query" placeholder="Search..." />
      <button type="submit">Search</button>
    </Form>
  );
}

Benefits:

5. Improved Caching Behavior

Next.js 15 changes default caching behavior to be more predictable:

// Opt-in to caching when needed
export const dynamic = 'force-static';
 
// Or per-request caching
fetch(url, { cache: 'force-cache' });

6. Partial Prerendering (PPR) - Experimental

PPR allows you to render static parts of a page instantly while streaming dynamic content separately.

import { Suspense } from 'react';
 
export default function Page() {
  return (
    <>
      {/* Static content - prerendered */}
      <Header />
      
      {/* Dynamic content - streamed */}
      <Suspense fallback={<Skeleton />}>
        <DynamicContent />
      </Suspense>
    </>
  );
}

Migration Tips

1. Update Dependencies

npm install next@15 react@19 react-dom@19

2. Update Async APIs

Search your codebase for params, searchParams, cookies, and headers usage and add await:

# Find all instances
grep -r "params\." app/

3. Test Thoroughly

Run your test suite and verify all dynamic routes work correctly:

npm run build
npm run start

4. Use Codemod for Automatic Migration

npx @next/codemod@canary next-async-request-api .

Why These Changes Matter

Better Performance

Enhanced Developer Experience

Future-Ready Architecture

Real-World Impact

In my recent project migration to Next.js 15, I experienced:

// Example: Real-world form with Server Action
import { createUser } from '@/actions/users';
 
export default function SignupForm() {
  return (
    <Form action={createUser}>
      <input name="email" type="email" required />
      <input name="password" type="password" required />
      <button type="submit">Sign Up</button>
    </Form>
  );
}

Breaking Changes to Watch

  1. Async APIs - All params, searchParams must be awaited
  2. Caching defaults - Opt-in instead of opt-out
  3. Minimum React version - Must use React 19
  4. Node.js requirement - Minimum Node.js 18.18.0

Conclusion

Next.js 15 represents a significant leap forward in web development. While the async API changes require some migration effort, the performance improvements and new capabilities make it worthwhile.

The combination of React 19, Turbopack stability, and better caching semantics creates a powerful foundation for building modern web applications. Whether you're starting a new project or considering an upgrade, Next.js 15 is ready for production.

Ready to upgrade? Start with a small project, test thoroughly, and gradually migrate your larger applications. The future of web development is here, and it's faster than ever.


Resources: