This page is also available as Markdown: request this page's URL with an
Accept: text/markdown header. For an index of Next.js documentation, see /docs/llms.txt.cacheLife
Last updated August 18, 2026
The cacheLife option allows you to define custom cache profiles when using the cacheLife function inside components or functions, and within the scope of the use cache directive.
Usage
To define a profile, enable the cacheComponents flag and add the cache profile in the cacheLife object in the next.config.js file. For example, a blog profile:
next.config.ts
import type { NextConfig } from 'next'
const nextConfig: NextConfig = {
cacheComponents: true,
cacheLife: {
blog: {
stale: 3600, // 1 hour
revalidate: 900, // 15 minutes
expire: 86400, // 1 day
},
},
}
export default nextConfigYou can now use this custom blog configuration in your component or function as follows:
app/actions.ts
import { cacheLife } from 'next/cache'
export async function getCachedData() {
'use cache'
cacheLife('blog')
const res = await fetch('https://api.example.com/data')
const data = await res.json()
return data
}You can also override a built-in profile by defining one with the same name (default, seconds, minutes, hours, days, weeks, or max). See Overriding the default cache profiles.
Reference
The configuration object has key values with the following format:
| Property | Value | Description | Requirement |
|---|---|---|---|
stale | number | Duration the client should cache a value without checking the server. | Optional |
revalidate | number | Frequency at which the cache should refresh on the server; stale values may be served while revalidating. | Optional |
expire | number | Maximum duration for which a value can remain stale before switching to dynamic. | Optional - Must be longer than revalidate |
Related
View related API references.
Was this helpful?