‘use cache’
The Next.js team has officially launched Next.js 16, just ahead of Next.js Conf 2025, and it’s a big one. The release brings a mix of new patterns, improved tooling, and some breaking changes worth noting.
1. Cache Components (explicit caching)
The biggest shift is the new Cache Components model, which introduces a use cache directive (‘use cache’). What is up with Nextjs’s obsession with ‘use’? We have react hooks that start with ‘use’, now we keep getting more directives with ‘use’, it feels like we are eventually going to rename React to “useReact”. Anyway, this directive gives developers explicit control over what gets cached—pages, components, or functions. Unlike previous versions, caching is now opt-in, make sure you take note of this and get “use”d to it. Ha, I crack myself up. This change makes caching behavior much clearer and easier to reason about, especially for dynamic data. This one was for you – all of the reddit trolls out there complaining about the default caching behavior.
2. DevTools MCP integration
Buzzword! Now AI can directly help with debugging you Nextjs application! Next.js 16 introduces a DevTools MCP (Model Context Protocol) integration. This provides richer debugging workflows with deep insights into routing, logs, errors, and even runtime context. It’s designed to make troubleshooting in complex apps much easier. Here are some of the features (I took this straight from their documentation):
- Next.js knowledge: Routing, caching, and rendering behavior
- Unified logs: Browser and server logs without switching contexts
- Automatic error access: Detailed stack traces without manual copying
- Page awareness: Contextual understanding of the active route
3. middleware.ts replaced by proxy.ts
This is a big one! The old middleware.ts has been replaced by proxy.ts, clarifying how request interception works. This change “makes the app’s network boundary explicit”. Before, the boundary was a bit fuzzy – middleware could run in the Edge Runtime or Node.js runtime. It now acts as the official entry point for network requests and runs on Node.js runtime. There are still APIs available for use within Proxy that will run in the Edge runtime: https://nextjs.org/docs/app/api-reference/edge.
4. Improved logging and performance visibility
Verbose logging during development and builds now gives better insights into compile times, rendering latency, and static generation.
5. Turbopack is now the default bundler for all apps
It brings significant speed improvements for both local development and production builds, making compilation and refreshes noticeably faster.
6. React Compiler and routing updates
The React Compiler is now stable and automatically memoizes components for performance gains – maybe this one deserves an article of its own… Routing has also improved with layout deduplication and incremental prefetching, making navigation faster and smoother.
7. Refined caching APIs
Caching APIs have been updated:
revalidateTag()now requires a cachelife profile.- New Server Actions–only APIs like
updateTag()andrefresh()let you refresh uncached or interactive data on demand.
So…again…more explicit control over cache behavior.
8. Breaking changes
Minimum requirements are now Node.js 20.9+ and TypeScript 5.1+. AMP support has been removed, and middleware.ts is officially deprecated.
This release feels like Next.js taking a step toward more explicit control(thanks to all of persistant devs on reddit, github, and twitter (erhm..sorry, X), clearer boundaries, and stable support for React 19 features. I’m looking forward to seeing what we get at Next.js Conf 2025. And I am excited to write more in-depth articles on some of these features. Til next time! 🙂
Full release notes: nextjs.org/blog/next-16

Leave a comment