FrontendNext.jsNext.js 15ReactTurbopackWeb Development

Next.js 15: New Features and Breaking Changes Explained

A complete breakdown of what is new in Next.js 15 — async APIs, improved caching defaults, Turbopack stability, and how to upgrade safely.

Abdur Razzak

Abdur Razzak

Full-Stack Web Developer

August 27, 2024 9 min read

What Is New in Next.js 15?

Next.js 15 is a significant release that brings Turbopack as the stable development bundler, async versions of cookies, headers, and params APIs, improved caching defaults, and better React 19 support. Many of these changes are breaking from Next.js 14, so upgrading requires careful attention to the migration guide. The performance improvements — especially with Turbopack — make the upgrade well worth it.

Async Request APIs

The biggest breaking change in Next.js 15 is that cookies(), headers(), params, and searchParams are now asynchronous. You must await them: const cookieStore = await cookies(); const headersList = await headers(). This change aligns Next.js with the broader direction of making all I/O operations explicitly async. The codemod npx @next/codemod@canary upgrade latest can automate most of these changes in your codebase.

Turbopack as Stable Dev Bundler

Turbopack (the Rust-based bundler) is now stable for next dev in Next.js 15. It offers dramatically faster cold start times and HMR (Hot Module Replacement) compared to Webpack — up to 5x faster on large projects. Enable it by running next dev --turbopack or setting the turbopack flag in next.config.js. Note that next build still uses Webpack in Next.js 15; Turbopack build support is coming in a future release.

Caching Changes

Next.js 15 changes the default caching behavior: fetch requests are no longer cached by default (they default to no-store). This is a significant breaking change from Next.js 14 where fetch was cached by default. You must now explicitly opt into caching with { cache: 'force-cache' } or { next: { revalidate: 3600 } }. This change makes the behavior more predictable and reduces confusing stale data bugs.

React 19 Compatibility

Next.js 15 fully supports React 19, which brings the use() hook for reading promises and context in render, the useActionState hook replacing useFormState, and improved hydration error messages. The React compiler (formerly React Forget) is available as an experimental plugin that automatically memoizes components without manual useMemo and useCallback calls — a potential game-changer for performance optimization.

How to Upgrade

Run npx @next/codemod@canary upgrade latest to apply automatic codemods for the breaking changes. Review the Next.js 15 migration guide for any changes the codemod doesn't cover. Test thoroughly after upgrading — especially any code that relied on automatic caching or synchronous params/cookies access. For production projects, I recommend upgrading in a feature branch with full test coverage before merging.

Share this article

All posts
#Next.js#Next.js 15#React#Turbopack#Web Development
Abdur Razzak — Full Stack Web Developer

Let's Connect

Follow My Developer Journey