Next.js v16
Cache Components

Novas APIs de cache e deduplicação

O Next.js 16 expande as APIs de dados para trabalhar em conjunto com os Cache Components. O objetivo é tornar as estratégias de invalidação mais declarativas e menos dependentes de configurações espalhadas.

cacheTag e revalidateTag

Agora você pode organizar seus dados por etiquetas. Ao servir a página, chame cacheTag('posts'). Quando um dado mudar, invoque revalidateTag('posts') em uma Server Action ou rota.

'use cache'
import { unstable_cacheTag as cacheTag } from 'next/cache'

export default async function Blog() {
  cacheTag('posts')
  const posts = await getPosts()
  return <PostsList posts={posts} />
}
// app/actions/posts.ts
'use server'
import { revalidateTag } from 'next/cache'

export async function publishPost(id: string) {
  await cms.publish(id)
  revalidateTag('posts')
}

cacheLife granular

A função cacheLife aceita presets (minutes, hours, days) e perfis customizados definidos no next.config.ts. Você pode alterar stale, revalidate e expire em runtime, permitindo que um segmento tenha comportamento diferente dependendo da requisição.

'use cache'
import { unstable_cacheLife as cacheLife } from 'next/cache'

export default async function ProductPage({ params }) {
  cacheLife({ stale: 300, revalidate: 60, expire: 86400 })
  const product = await getProduct(params.slug)
  return <ProductView data={product} />
}

Request Memoization evoluído

Chamadas fetch com a mesma URL, método e corpo passam a serem deduplicadas em paralelo por padrão, reduzindo overfetching. Se precisar forçar bypass, use cache: 'no-store' ou next: { revalidate: 0 } explicitamente.