Back to Blog
Next.js 15

Next.js 15: What's New and How to Upgrade

â€ĸ18 min read

🚀 What's New in Next.js 15

Next.js 15 has arrived with groundbreaking features that push the boundaries of React development. Built on React 19, this release introduces async request APIs, enhanced caching strategies, and significant performance improvements that make building modern web applications faster and more intuitive than ever.

Introduction to Next.js 15

Next.js 15 represents a major milestone in the Next.js ecosystem. Released in late 2024 and refined throughout 2025, this version brings React 19 support, async request APIs, improved caching strategies, and Turbopack stability. The framework has focused on developer experience, performance, and stability in this release.

Whether you're migrating from Next.js 14 or starting fresh, this release brings powerful tools to build faster, more efficient applications. If you're working with React 19, check out our guide on React 19 features to see how it integrates seamlessly with Next.js 15.

Key Features in Next.js 15

1. React 19 Support

Next.js 15 is built on React 19, bringing all the latest React features to your Next.js applications. React 19 introduces the React Compiler, Actions, improved hydration, and better error handling. These features work seamlessly with Next.js to provide an unparalleled development experience.

// Server Component with React 19
async function ServerComponent() {
  const data = await fetch('https://api.example.com/data');
  const json = await data.json();
  
  return <div>{json.title}</div>;
}

2. Async Request APIs

One of the most significant changes in Next.js 15 is the introduction of async request APIs. Headers, cookies, and params are now accessed asynchronously, aligning with React's async model and enabling better streaming and performance.

import { headers, cookies } from 'next/headers';

export default async function Page() {
  // Access headers asynchronously
  const headersList = await headers();
  const userAgent = headersList.get('user-agent');
  
  // Access cookies asynchronously  
  const cookieStore = await cookies();
  const theme = cookieStore.get('theme');
  
  return <div>User Agent: {userAgent}</div>;
}

3. Enhanced Caching Strategy

Next.js 15 introduces a more intuitive caching system. By default, fetch requests are no longer cached automatically - giving you explicit control over when and how data is cached. This prevents unexpected stale data issues and makes the caching behavior more predictable.

// Cached fetch request
const data = await fetch('https://api.example.com/data', {
  cache: 'force-cache', // Explicit caching
  next: { revalidate: 3600 } // Revalidate every hour
});

// No cache (default in Next.js 15)
const liveData = await fetch('https://api.example.com/live', {
  cache: 'no-store' // Always fresh
});

4. Turbopack Dev - Production Ready

Turbopack, the Rust-powered successor to Webpack, is now stable for development in Next.js 15. It delivers dramatically faster builds and hot module replacement (HMR), making your development experience significantly smoother. Early benchmarks show 10x faster updates compared to Webpack in large applications.

💡 Enable Turbopack: Add --turbo flag: next dev --turbo

5. Improved Image Component

The next/image component gets better with faster loading, improved placeholder support, and better optimization for modern image formats like AVIF. Automatic format detection ensures your users get the best possible image experience.

Breaking Changes & Migration

Upgrading from Next.js 14

Next.js 15 includes some breaking changes, primarily around the async request APIs. Here's what you need to know to migrate your existing applications smoothly:

  • Async Headers & Cookies: The headers() and cookies() functions now return Promises. You'll need to add await when using them in Server Components.
  • Fetch Caching Default: Fetch requests are no longer cached by default. Add cache: 'force-cache' explicitly if you want caching behavior.
  • Route Segment Config: Some route segment config options have been renamed or deprecated. Check the migration guide for specifics.

Tip: Use Next.js's codemod tool to automatically migrate most of your code to Next.js 15 patterns. Run: npx @next/codemod@latest

Step-by-Step Upgrade Guide

Step 1: Update Dependencies

npm install next@latest react@latest react-dom@latest
# or
yarn add next@latest react@latest react-dom@latest
# or  
pnpm add next@latest react@latest react-dom@latest

Step 2: Update Async APIs

Add await to headers(), cookies(), and params usage throughout your codebase. Use codemod for automated migration.

Step 3: Review Caching

Explicitly add cache: 'force-cache' to fetch requests that should be cached. Review your data fetching strategy.

Step 4: Test Thoroughly

Run your application locally with Turbopack (next dev --turbo), test all features, and run your test suite before deploying.

Performance Improvements

Beyond the headline features, Next.js 15 includes numerous performance improvements across the board. From faster builds to optimized runtime performance, every aspect of the framework has been refined for production use at scale.

  • ✓Faster Builds: Improved build performance with better tree shaking, code splitting, and bundle optimization. Production builds are 20-30% faster.
  • ✓Runtime Optimizations: Reduced overhead in the Next.js runtime, resulting in faster page loads and better Time to Interactive (TTI) metrics.
  • ✓Smaller Bundles: Better tree shaking and dead code elimination result in smaller JavaScript bundles sent to clients.
  • ✓Memory Usage: Optimized memory consumption during builds and runtime, allowing larger applications to build more efficiently.

Best Practices

  • ✓Use Server Components by default for better performance and SEO
  • ✓Leverage async request APIs for better streaming and performance
  • ✓Explicitly configure caching for predictable data fetching behavior
  • ✓Enable Turbopack for faster development builds and HMR
  • ✓Take advantage of React 19's new features like Actions and improved hooks

Conclusion

Next.js 15 represents a major leap forward with React 19 integration, async request APIs, and Turbopack stability. While the breaking changes require some migration effort, the performance and developer experience improvements make it well worth the upgrade.

Start experimenting with Next.js 15 today in a new project, then plan your migration strategy for existing applications. The future of React development is here, and it's faster, more powerful, and more intuitive than ever! For more on modern React development, check out our article on React 19 Features and Next.js 14 Features.