Next.js 16.4: Cache Components Default, React 19.3 Next.js 16.4, released October 6th, makes Cache Components the default in every new create-next-app project, replacing the implicit caching model of Next.js 13 through 15 with the explicit "use cache" directive. The release bundles React 19.3, which stabilizes View Transitions and Fragment Refs and adds a browser() API and Trusted Types support, plus lazy compilation for client dynamic imports and server modules and a new next upgrade --agent command. Vercel has not removed unstable_cache, but Next.js 17 will make Cache Components the framework-wide default, making 16.4 the migration window for existing 16.x apps. Next.js 16.4 dropped October 6th with a clear message: stop fighting caching. Cache Components — the explicit "use cache" model that replaced the confusing implicit caching layers of older Next.js versions — are now the default in every new create-next-app project. Add React 19.3 View Transitions and Fragment Refs reaching stable , lazy compilation that cuts dev startup waste, and a new next upgrade --agent command that delegates your upgrade to an AI agent, and 16.4 is the most developer-focused minor release in the 16.x cycle. Cache Components Are Now Default Starting with Next.js 16.4, every project bootstrapped with create-next-app ships with cacheComponents: true in its config. The old model — where routes cached implicitly unless you opted out — is gone from new projects. In its place: nothing is cached unless you say so, and you say so with the "use cache" directive. This is the right call. The implicit caching in Next.js 13 through 15 confused nearly every developer who ran into it. The explicit model is simpler to reason about, easier to audit, and makes cache behavior visible in your code instead of hidden in framework internals. The migration from unstable cache follows a clean pattern: js // Before: unstable cache const data = await unstable cache async = db.query 'SELECT FROM products' , 'products' , { revalidate: 3600, tags: 'products' } ; // After: "use cache" async function getProducts { 'use cache'; cacheLife 'hours' ; cacheTag 'products' ; return db.query 'SELECT FROM products' ; } The cache key is derived automatically from the function’s closure and arguments — no more manual key arrays. revalidate becomes cacheLife with named profiles seconds, minutes, hours, days, weeks, max , and tags map 1:1 to cacheTag . You can also drop dynamic = 'force-dynamic' annotations: with Cache Components, data is uncached by default. Existing 16.x apps: unstable cache still works — Vercel hasn’t removed it. But Next.js 17 will make Cache Components the framework-wide default, so 16.4 is your migration window. Audit before the deadline rather than scramble at it. React 19.3 Ships With This Release Next.js 16.4 bundles React 19.3, which graduated two features to stable and added two new ones. View Transitions and Fragment Refs are now stable.