revalidatePath
Core Idea
Invalida dados cacheados sob demanda para um path específico (página, layout ou route handler), forçando dados frescos na próxima visita.
Key Concepts
- revalidatePath(path, type?):
path é literal (/product/123) ou padrão com segmento dinâmico (/product/[slug], exige type); não anexar /page ou /layout ao path, use o parâmetro type. Máx. 1024 caracteres, case-sensitive.
- Server Functions vs Route Handlers: em Server Functions atualiza a UI imediatamente se a página afetada está sendo vista; em Route Handlers, apenas marca para revalidação na próxima visita.
- Escopo de invalidação por tipo: Pages invalida só a página específica; Layouts invalida o layout + todos os layouts/páginas aninhados abaixo; Route Handlers invalida dados cacheados acessados dentro do handler.
- Com rewrites: deve usar o path de destino (arquivo de rota real), não o path de origem visível na URL do browser.
Code Examples
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/post-1')
- O que demonstra: revalidação de um path literal específico.
import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'page')
- O que demonstra: revalidar todas as páginas que casam com um padrão dinâmico, sem afetar rotas aninhadas abaixo.
import { revalidatePath } from 'next/cache'
revalidatePath('/', 'layout')
- O que demonstra: purga o Client Cache inteiro e invalida todos os dados cacheados da aplicação.
'use server'
import { revalidatePath, updateTag } from 'next/cache'
export async function updatePost() {
await updatePostInDatabase()
revalidatePath('/blog')
updateTag('posts')
}
- O que demonstra: combinar
revalidatePath (path específico) com updateTag (todas as páginas que usam a tag) para consistência abrangente.
Reference Tables
| Parameter | Type | Description |
|---|
path | string | rota literal ou padrão dinâmico, máx 1024 chars |
type | 'page' | 'layout' (opcional) | obrigatório se path tem segmento dinâmico |
Anti-patterns
- Usar o path de origem de um rewrite:
revalidatePath opera na estrutura de arquivo de rota, não na URL visível — use o destino do rewrite.
- Confundir com revalidateTag/updateTag:
revalidatePath só afeta o path específico; páginas diferentes que usam os mesmos dados com tags continuam servindo cache stale até a tag ser invalidada também.
- Chamar em Client Component ou Proxy: só funciona em Server Functions e Route Handlers.
Key Takeaways
- Só o path (ou padrão) especificado é invalidado — outras páginas com a mesma tag de dados continuam stale.
- Em Route Handlers, a invalidação é preguiçosa (só na próxima visita), evitando rajadas de revalidação com paths dinâmicos.
- Combine com
updateTag para invalidação abrangente entre páginas diferentes que compartilham dados.
Connects To
- revalidateTag: invalida por tag, aplicando-se a todas as páginas que a usam.
- updateTag: expira dados por tag imediatamente, ao invés de marcar como stale.