The App Router has four caching layers. Next.js 15 made caching opt-in.
The four layers:
- Request memoization is a React feature. It removes duplicate identical GET
fetchcalls within one server render. So a layout and a page can ask for the same data, and only one call happens. - Data Cache stores
fetchresults on the server. They last across requests and even across deployments, until you revalidate them. - Full Route Cache stores the HTML and RSC payload of statically rendered routes at build time. The RSC payload is the compact description of the rendered Server Component tree.
- Router Cache lives in the browser memory. It keeps the RSC payloads of visited and prefetched segments (parts of the route), so back and forward navigation is fast.
What changed in Next.js 15:
fetchis no longer stored in the Data Cache by default.- GET Route Handlers are not cached by default.
- The browser Router Cache no longer reuses page segments by default.
One thing did not change. A route that uses no dynamic APIs (request-time APIs like cookies(), headers() or searchParams) is still prerendered at build time.
- Request memoization removes duplicate fetches within one request.
- The Data Cache keeps fetch results on the server across requests.
- The Full Route Cache stores prerendered HTML and RSC payloads.
- The Router Cache keeps visited route data in browser memory.
- In Next.js 15, fetch and GET handlers are not cached by default, and the Router Cache no longer reuses page segments.
Read more