With the release of version 16 of Next.js (published on October 21, 2025), the Vercel team is reaching a new milestone in architecture, performance, and developer experience. This article takes a look at what’s new, what to remember, and how to prepare for this upgrade.
Why version 16?
After the improvements brought by version 15, especially around rendering optimization and router architecture, version 16 aims to:
- Strengthen caching and partial rendering (“partial prerendering”) to gain speed and flexibility;
- Improve developer tooling (logs, debugging, introspection);
- Clarify certain concepts (for example, the move from
middleware.jstoproxy.js); - Make Turbopack the default option for builds and development.
In short: a qualitative leap, and a perfect time to take a look at your own codebase.
What’s new?
Next.js 16 has just been announced, and this new version brings real progress for developers.
After the release of Next.js 15, which introduced compatibility with React 19 and new server-side optimizations, this version focuses on performance, caching, and developer experience.
Let’s take a closer look at what’s changing.
The cache gets smarter with Cache Components
The biggest new feature in Next.js 16 is called Cache Components. This system gives developers better control over what should be cached and what should be recalculated with each request.
Until now, caching in Next.js could feel a bit unclear. With the new use cache directive, it’s now possible to clearly specify which components or functions should be kept in memory.
This avoids unnecessary recalculations for parts of the interface while keeping the ability to render other elements in real time.
This change makes the framework more predictable: you know exactly when and why data is fetched or served from the cache. It’s also an important step toward faster rendering—especially for large applications where every millisecond counts!
The proxy.js file replaces middleware.js
Another notable change: the middleware.js file is now replaced by proxy.js. The goal is to clarify the role of this file in handling network requests.
The behavior remains essentially the same—it still intercepts requests before they reach the pages—but the new naming convention makes things clearer and more consistent.
Good to know 😉
middleware.js is still temporarily supported for existing projects, but it’s now considered deprecated. For those already using middleware, the migration is simple: just rename the file and slightly adjust the exported function.
Turbopack becomes the new standard
Next.js 16 confirms what was started in the previous version: Turbopack is finally the default bundler.
Developed by Vercel to replace Webpack, Turbopack offers impressive compilation speed in both development and production. Builds are faster, hot reloads are smoother, and handling large files is much more efficient.
This means that new Next.js projects automatically use Turbopack, but it’s still possible to switch back to Webpack if needed with a simple command.
In practice, most developers will quickly adopt this new engine since the performance gains are significant.
With Turbopack, performance takes a huge leap: production builds are up to 5× faster, Fast Refresh can be up to 10× quicker, and everything works with zero configuration.
A better developer experience with Next.js DevTools MCP
The Next.js team has also put a lot of work into improving the developer experience.
Logs have been redesigned to be clearer and more useful. You can now see how long each step of the build or render takes, making it easier to identify bottlenecks.
Next.js 16 also introduces a new tool: Next.js DevTools MCP. These development tools let you analyze your app’s behavior in real time, including:
- caching;
- routes;
- performance;
- and rendered components.
This is a major improvement, especially for teams working on complex projects. It’s now easier to understand what the framework is doing and to save time debugging.
More efficient routing and preloading
The navigation system in Next.js also keeps evolving.
Shared layouts between multiple pages are now downloaded only once, reducing overall site weight and improving navigation speed.
Preloading (prefetch) has also become smarter: Next.js no longer preloads everything automatically, but only what isn’t already cached. This helps reduce network load and speed up page transitions.
Important changes under the hood
As with every major version, Next.js 16 takes the opportunity to clean things up a bit.
This version now requires Node 20 or higher, as well as TypeScript 5.1 at minimum. AMP support has been completely removed, along with legacy configurations like publicRuntimeConfig and serverRuntimeConfig.
These choices help streamline the framework and refocus it on modern web standards.
Older experimental options related to partial rendering, such as experimental.ppr, have also been removed. They’re replaced by the new Cache Components system (discussed above), which is much simpler to understand and use.
Finally, caching functions like revalidateTag() and updateTag() have been reworked for greater consistency and now integrate better into the new rendering model.
Next.js 16 also officially adopts React 19.2!
How to migrate to Next.js 16
The good news is that migrating to Next.js 16 is very simple.
In most cases, you just need to update your dependencies and make sure your Node version meets the new requirements.
Vercel even provides an official codemod to automate the necessary adjustments:
- renaming the
middleware.jsfile; - removing deprecated options and adapting the cache configuration.
You can use this command:
npx @next/codemod@canary upgrade latestIn just a few minutes, your app can run on the new version without any issues.
This is one of Next.js’s strengths: despite its fast evolution, updates remain smooth and rarely painful.
Conclusion
Next.js 16 isn’t a revolution, but rather a well-controlled evolution.
This release stabilizes many features while clarifying how caching and routing work.
With Turbopack as the default, a smarter cache system, and new diagnostic tools, Next.js becomes faster, more readable, and more enjoyable to use.
For those already working with Next.js, upgrading is an obvious choice. And for newcomers, there’s no better time to start: Next.js 16 is now the most complete, performant, and stable version ever released.
If you’re not sure where to begin, join our Next.js 16 course!







