---
title: Next.js 15.4
description: Next.js 15.4 includes updates to performance, stability, and Turbopack compatibility.
url: "https://nextjs.org/blog/next-15-4"
publishedAt: July 14th 2025
authors:
  - Jimmy Lai
  - Zack Tanner
---


Next.js 15.4 includes updates to performance, stability, and Turbopack compatibility. Highlights for this release include:

- [**Turbopack Builds**](/blog/next-15-4#turbopack-builds): 100% integration test compatibility for `next build --turbopack`
- [**Stability Improvements**](/blog/next-15-4#notable-changes): Numerous stability and performance improvements to Next.js and Turbopack

This blog post also includes an early preview of what's coming in Next.js 16, our next major release.

Upgrade today, or get started with:

```bash filename="Terminal"
# Use the automated upgrade CLI
npx @next/codemod@canary upgrade latest

# ...or upgrade manually
npm install next@latest react@latest react-dom@latest

# ...or start a new project
npx create-next-app@latest
```

## Turbopack Builds

`next build --turbopack` now passes [**all 8298 integration tests**](https://areweturboyet.com/) for production builds and now powers `vercel.com`. This is a crucial milestone towards marking Turbopack in Next.js stable.

The team's current priority is to finish the swing on bundling optimizations via production chunking and to fix reported bugs from early adopters of the Alpha release. We've also made numerous stability and performance improvements to Turbopack under the hood.

We are confident that Turbopack will soon be ready for production use, and we're working towards a beta release in Next.js 16. If you had tried Turbopack previously, now is a good time to try again. If you run into any issues let us know on [GitHub Issues](https://github.com/vercel/next.js/issues).

## Looking Ahead: Next.js 16

Over the past few months, we've been iterating on major improvements to Next.js, focusing on both the developer experience with Turbopack and the core capacities of the App Router with `PPR` and `use cache`. While we are not ready to enable those features on by default, we are looking to lay the groundwork for our users to try it out in Next.js 16 this summer.

Here’s a preview of what's coming in Next.js 16:

- **Cache Components (beta)**: Consolidates experimental caching features (Dynamic IO, `use cache`, and Partial Prerendering) into a unified `cacheComponents` flag, simplifying performance optimization strategies. The Next.js 16 blog post will detail our vision.
- **Turbopack Builds (beta)**: Introduces `next build --turbopack`, fully passing integration tests, and validated internally on high-traffic sites like vercel.com. Ready for expanded public beta use in Next.js 16.
- **Optimized Client-Side Routing**: Enhances App Router navigation with smarter prefetching, improved cache invalidation strategies, and reduced bandwidth usage, resulting in faster and more responsive navigation.
- **DevTools & Debugging**: Adds Route Info to inspect app structure and toggle components like `loading.tsx`. Adds experimental browser log forwarding to the terminal to support AI-powered debugging workflows.
- **Node.js Middleware (stable)**: Promotes the previously experimental Node.js runtime support for Middleware, initially introduced in Next.js 15.2, to stable status.
- **Deployment Adapters (alpha)**: Enables developers to create custom deployment adapters for finer control over build and deploy targets.
- **Minor Deprecations and Changes**: Deprecates Node.js 18 support, AMP, and changes to select `next/image` APIs with appropriate migration guidance.

Our goal is to make this update as smooth and straightforward as possible. We're managing these changes carefully to minimize disruption and will provide clear guidance and tools to support your transition to Next.js 16.

## Preview Upcoming Features

You can start experimenting with many of these features today by using the `canary` channel and enabling the following flags in your `next.config.js`:

```ts filename="next.config.ts"
import type { NextConfig } from 'next';

const nextConfig: NextConfig = {
  experimental: {
    // Forward browser logs to the terminal for easier debugging
    browserDebugInfoInTerminal: true,

    // Enable new caching and pre-rendering behavior
    dynamicIO: true, // will be renamed to cacheComponents in Next.js 16

    // Activate new client-side router improvements
    clientSegmentCache: true,

    // Explore route composition and segment overrides via DevTools
    devtoolSegmentExplorer: true,

    // Enable support for `global-not-found`, which allows you to more easily define a global 404 page.
    globalNotFound: true,

    // Enable persistent caching for the turbopack dev server and build.
    turbopackPersistentCaching: true,
  },
};

export default nextConfig;
```

## Notable Changes

- [Improvement] Preserve RSC query during redirects ([#77963](https://github.com/vercel/next.js/pull/77963))
- [Improvement] Graceful error fallback for bots ([#77916](https://github.com/vercel/next.js/pull/77916))
- [Improvement] Disallow `unstable_rootParams` in client components ([#79471](https://github.com/vercel/next.js/pull/79471))
- [Improvement] Fix `bodySizeLimit` errors and non-multipart actions ([#77746](https://github.com/vercel/next.js/pull/77746))
- [Improvement] Respond with 404 for unknown action IDs ([#77012](https://github.com/vercel/next.js/pull/77012))
- [Improvement] Check cache-busting params on RSC requests ([#80669](https://github.com/vercel/next.js/pull/80669))
- [Improvement] Upgrade Vercel OG to 0.7.2 ([#81447](https://github.com/vercel/next.js/pull/81447))
- [Improvement] List `assert/strict` as external ([#80884](https://github.com/vercel/next.js/pull/80884))
- [Improvement] Omit searchParam data from `FlightRouterState` before transport ([#80734](https://github.com/vercel/next.js/pull/80734))
- [Improvement] Render streaming metadata on the top level ([#80566](https://github.com/vercel/next.js/pull/80566))
- [Fix] Clone the config module to avoid mutation ([#80573](https://github.com/vercel/next.js/pull/80573))
- [Fix] Bugfix: Propagate `staleTime` to seeded prefetch entry ([#81263](https://github.com/vercel/next.js/pull/81263))
- [Fix] Reinstate vary ([#79939](https://github.com/vercel/next.js/pull/79939))
- [Fix] Fix interestingness detection for React Compiler ([#79558](https://github.com/vercel/next.js/pull/79558))
- [Fix] Fix react compiler usefulness detector ([#79480](https://github.com/vercel/next.js/pull/79480))
- [Fix] Better handle edge-case file paths in launchEditor ([#79526](https://github.com/vercel/next.js/pull/79526))
- [Fix] Client router should discard stale prefetch entries for static pages ([#79362](https://github.com/vercel/next.js/pull/79362))
- [Feature] Add `onInvalidate` to `router.prefetch` ([#77880](https://github.com/vercel/next.js/pull/77880))
- [Feature] Add `prefetch="auto"` as an alias to `prefetch={undefined}` to Link ([#78689](https://github.com/vercel/next.js/pull/78689))
- [Feature] Support metadata in global-not-found ([#78961](https://github.com/vercel/next.js/pull/78961))
- [Feature] Restart dev server from error overlay ([#80060](https://github.com/vercel/next.js/pull/80060))
- [Feature] Restart dev server from indicator preferences ([#80072](https://github.com/vercel/next.js/pull/80072))
- [Feature] Add `--debug-prerender` option for `next build` ([#80667](https://github.com/vercel/next.js/pull/80667))
- [Feature] Add htmlrewriter to server externals ([#80819](https://github.com/vercel/next.js/pull/80819))
- [Feature] Allow partially prerendering intercepted dynamic routes ([#80851](https://github.com/vercel/next.js/pull/80851))
- [Performance] Check files with SWC before React Compiler ([#75605](https://github.com/vercel/next.js/pull/75605))
- [Performance] Improve static path generation performance and parameter handling ([#81254](https://github.com/vercel/next.js/pull/81254))
- [Misc] Fix `NEXT_CPU_PROF` usage during development to allow capturing CPU traces ([#81248](https://github.com/vercel/next.js/pull/81248))

Share your feedback and help shape the future of Next.js:

- [GitHub Discussions](https://github.com/vercel/next.js/discussions)
- [GitHub Issues](https://github.com/vercel/next.js/issues)

## Contributors

Next.js is the result of the combined work of over 3,000 individual developers. This release was brought to you by:

- The **Next.js** team: [Andrew](https://github.com/acdlite), [Ben](https://github.com/bgub), [Hendrik](https://github.com/unstubbable), [Janka](https://github.com/lubieowoce), [Jiachi](https://github.com/huozhi), [Jimmy](https://github.com/feedthejim), [Jiwon](https://github.com/devjiwonchoi), [JJ](https://github.com/ijjk), [Josh](https://github.com/gnoff), [Jude](https://github.com/gao_jude), [Rob](https://github.com/robpruzan), [Sam](https://x.com/samselikoff), [Sebastian](https://github.com/sebmarkbage), [Sebbie](https://github.com/eps1lon), [Wyatt](https://github.com/wyattjoh), and [Zack](https://github.com/ztanner).
- The **Turbopack** team: [Benjamin](https://github.com/bgw), [Donny](https://github.com/kdy1), [Josh](https://github.com/Cy-Tek), [Luke](https://github.com/lukesandberg), [Maia](https://github.com/padmaia), [Niklas](https://github.com/mischnic), [Tim](https://github.com/timneutkens), [Tobias](https://github.com/sokra), and [Will](https://github.com/wbinnssmith).
- The **Next.js Docs** team: [Delba](https://github.com/delbaoliveira), [Rich](https://github.com/molebox), [Ismael](https://github.com/ismaelrumzan), [Joseph](https://github.com/icyJoseph), and [Lee](https://github.com/leerob).

Huge thanks to @sokra, @huozhi, @Marukome0743, @mischnic, @wbinnssmith, @eps1lon, @razzeee, @delbaoliveira, @kdy1, @wyattjoh, @acdlite, @ztanner, @bgw, @jantimon, @lubieowoce, @Fonger, @ospira, @gnoff, @styfle, @Cy-Tek, @timneutkens, @raunofreiberg, @devchaudhary24k, @Neschadin, @OreQr, @drewlong314, @ijjk, @praizjosh, @unstubbable, @lukesandberg, @ScriptedAlchemy, @sqidermad, @Juneezee, @devjiwonchoi, @Kamitenshi, @feedthejim, @leerob, @mauerbac, @miki-tebe, @gaearon, @mrbadri, @luwes, @lucacasonato, @M4xymm, @jirihofman, @vicb, @jackwilson323, @SyMind, @kevva, @xyf7, @gaojude, @dario-piotrowicz, @mastoj, @nicole0707, @lourd, @Karibash, @chipit24, @icyJoseph, @xusd320, @fireairforce, @GenhaoLi, @igas, @Macw07, @amannn, @bcdipesh, @r34son, @ivasilov, @lpalmes, @imskyleen, @teamleaderleo, @vitaliemiron, @agadzik, @chdeskur, @nakanoh, @luiscobot, @GameRoMan, @dferber90, @maurobonfietti, @navandstokes, @sajadtorkamani, @bobziroll, @lumirlumir, @KkOoSsTtAa, @msabramo, @sommeeeer, @schoenwaldnils, @remcohaszing, @HerringtonDarkholme, @bgub, @RobPruzan, @lmammino, @MohammedYehia, @extoci, @padmaia, @aacosta11, @vercel-release-bot, @maral, @ethanniser, @MichalMoravik, @rajrawat37, @kidonng, @dnhn, @kristian240, @rachnac-emeritus, @rortan134, and @nick20name17 for helping!