- Published on
The new `use cache` directive
The Next.js team is working on a simple and powerful caching model. In this article, we will cover the new `use cache` directive, caching strategies, and their use cases.
- Time to read
- 3min read

Table of contents
Usage
Lorem ipsum odor amet, consectetuer adipiscing elit. Nunc libero pretium tortor nunc lacinia viverra cras ante ullamcorper. Quisque eget inceptos natoque mi mollis integer eu mi.
// next.config.js
import type { NextConfig } from 'next'
const nextConfig: NextConfig = {
experimental: {
useCache: true,
},
}
export default nextConfig
Quam pulvinar nulla congue habitant fringilla sed eu sapien. Auctor gravida accumsan quis cubilia condimentum habitasse libero. Eget elementum volutpat libero habitant tortor malesuada habitant blandit.
// File level
'use cache'
export default async function Page() {
// ...
}
// Component level
export async function MyComponent() {
'use cache'
return <></>
}
// Function level
export async function getData() {
'use cache'
const data = await fetch('/api/data')
return data
}
Examples
Lorem ipsum odor amet, consectetuer adipiscing elit. Nunc libero pretium tortor nunc lacinia viverra cras ante ullamcorper. Quisque eget inceptos natoque mi mollis integer eu mi.
Quam pulvinar nulla congue habitant fringilla sed eu sapien. Auctor gravida accumsan quis cubilia condimentum habitasse libero. Eget elementum volutpat libero habitant tortor malesuada habitant blandit.
Entire routes
Lorem ipsum odor amet, consectetuer adipiscing elit. Nunc libero pretium tortor nunc lacinia viverra cras ante ullamcorper. Quisque eget inceptos natoque mi mollis integer eu mi.
// app/layout.tsx
'use cache'
import { unstable_cacheLife as cacheLife } from 'next/cache'
export default function Layout({ children }: { children: ReactNode }) {
return <div>{children}</div>
}
Component output
Lorem ipsum odor amet, consectetuer adipiscing elit. Nunc libero pretium tortor nunc lacinia viverra cras ante ullamcorper. Quisque eget inceptos natoque mi mollis integer eu mi.
Quam pulvinar nulla congue habitant fringilla sed eu sapien. Auctor gravida accumsan quis cubilia condimentum habitasse libero. Eget elementum volutpat libero habitant tortor malesuada habitant blandit.
// app/components/bookings.tsx
export async function Bookings({ type = 'haircut' }: BookingsProps) {
'use cache'
async function getBookingsData() {
const data = await fetch(`/api/bookings?type=${encodeURIComponent(type)}`)
return data
}
return //...
}
interface BookingsProps {
type: string
}
Function output
Lorem ipsum odor amet, consectetuer adipiscing elit. Nunc libero pretium tortor nunc lacinia viverra cras ante ullamcorper. Quisque eget inceptos natoque mi mollis integer eu mi.
Quam pulvinar nulla congue habitant fringilla sed eu sapien. Auctor gravida accumsan quis cubilia condimentum habitasse libero. Eget elementum volutpat libero habitant tortor malesuada habitant blandit.
// app/actions.ts
export async function getData() {
'use cache'
const data = await fetch('/api/data')
return data
}
Conclusion
Lorem ipsum odor amet, consectetuer adipiscing elit. Nunc libero pretium tortor nunc lacinia viverra cras ante ullamcorper. Quisque eget inceptos natoque mi mollis integer eu mi.
Quam pulvinar nulla congue habitant fringilla sed eu sapien. Auctor gravida accumsan quis cubilia condimentum habitasse libero. Eget elementum volutpat libero habitant tortor malesuada habitant blandit.
Auctor venenatis diam vitae sagittis ornare neque torquent. Habitant lacus aptent a tellus, dignissim ex. Fames tempor nostra duis justo quam aliquet varius.