Next.js Caching Mental Model in 2026: Request Memoization, Data Cache, Full Route Cache, and Router Cache Explained Once and for All A developer has published a detailed mental model for Next.js caching in 2026, breaking down the framework's four distinct caching layers: request memoization, the data cache, the full route cache, and the router cache. The writeup argues that most caching bugs stem from conflating these mechanisms and prescribes a layered approach to avoid over- and under-invalidation. It includes code examples showing how request memoization deduplicates identical fetches within a single render pass. This article was written with the assistance of AI, under human supervision and review. Most Next.js caching problems stem from treating four distinct mechanisms as a single black box. Teams call fetch , see unexpected stale data, and reach for { cache: 'no-store' } everywhere. Performance collapses. The root cause is conceptual: developers conflate request memoization a render-level optimization , the data cache persistent server-side storage , the full route cache static HTML at build time , and the router cache client-side navigation memory . Each layer has different scope, lifetime, and invalidation rules. Misunderstanding the boundaries produces bugs that look like framework quirks but are actually predictable consequences of a four-tier architecture. The solution is a layered mental model. Request memoization deduplicates identical fetches within a single React render pass. The data cache persists fetch responses across requests on the server. The full route cache stores prerendered HTML pages at build time. The router cache remembers navigated route payloads on the client. When teams internalize these boundaries, they stop over-invalidating wasting CPU and under-invalidating serving stale data . The framework becomes legible. Request memoization deduplicates identical fetch calls within a single React render pass. When multiple components request the same URL with the same options during server-side rendering, Next.js executes the fetch once and returns the cached response to all callers. The memoization scope is the render tree. After the server sends the HTML response, the memoization cache resets. The next request starts with an empty memoization layer. This optimization prevents redundant network calls when a layout and three child components all fetch /api/user . Without memoization, four identical requests would fire. With memoization, one request fires and four components receive the same data. The mechanism is automatic. Developers do not configure it. The only requirement is that the fetch URL and options object match exactly. js // app/layout.tsx async function RootLayout { const user = await fetch 'https://api.example.com/user' .then r = r.json ; return