revalidatePath

revalidatePath permite purgar los datos en caché bajo demanda para una ruta específica.

Importante:

Parámetros

revalidatePath(path: string, type?: 'page' | 'layout'): void;
  • path: Puede ser una cadena que represente la ruta del sistema de archivos asociada con los datos que desea revalidar (por ejemplo, /product/[slug]/page), o el segmento de ruta literal (por ejemplo, /product/123). Debe tener menos de 1024 caracteres. Este valor distingue entre mayúsculas y minúsculas.
  • type: (opcional) Cadena 'page' o 'layout' para cambiar el tipo de ruta a revalidar. Si path contiene un segmento dinámico (por ejemplo, /product/[slug]/page), este parámetro es requerido.

Retorno

revalidatePath no retorna ningún valor.

Ejemplos

Revalidando una URL específica

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/post-1')

Esto revalidará una URL específica en la próxima visita a la página.

Revalidando una ruta de página

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'page')
// o con grupos de rutas
revalidatePath('/(main)/post/[slug]', 'page')

Esto revalidará cualquier URL que coincida con el archivo page proporcionado en la próxima visita. Esto no invalidará páginas debajo de la página específica. Por ejemplo, /blog/[slug] no invalidará /blog/[slug]/[author].

Revalidando una ruta de layout

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'layout')
// o con grupos de rutas
revalidatePath('/(main)/post/[slug]', 'layout')

Esto revalidará cualquier URL que coincida con el archivo layout proporcionado en la próxima visita. Esto hará que las páginas debajo con el mismo layout se revaliden en la próxima visita. Por ejemplo, en el caso anterior, /blog/[slug]/[another] también se revalidaría en la próxima visita.

Revalidando todos los datos

import { revalidatePath } from 'next/cache'

revalidatePath('/', 'layout')

Esto purgará la caché del enrutador del lado del cliente (Client-side Router Cache) y revalidará la caché de datos en la próxima visita a la página.

Acción de servidor (Server Action)

'use server'

import { revalidatePath } from 'next/cache'

export default async function submit() {
  await submitForm()
  revalidatePath('/')
}

Manejador de ruta (Route Handler)

import { revalidatePath } from 'next/cache'
import { NextRequest } from 'next/server'

export async function GET(request: NextRequest) {
  const path = request.nextUrl.searchParams.get('path')

  if (path) {
    revalidatePath(path)
    return Response.json({ revalidated: true, now: Date.now() })
  }

  return Response.json({
    revalidated: false,
    now: Date.now(),
    message: 'Missing path to revalidate',
  })
}
import { revalidatePath } from 'next/cache'

export async function GET(request) {
  const path = request.nextUrl.searchParams.get('path')

  if (path) {
    revalidatePath(path)
    return Response.json({ revalidated: true, now: Date.now() })
  }

  return Response.json({
    revalidated: false,
    now: Date.now(),
    message: 'Missing path to revalidate',
  })
}