
- Next.js - Home
- Next.js - Overview
- Next.js - Project Setup
- Next.js - Folder Structure
- Next.js - App Router
- Next.js - Page Router
- Next.js Features
- Next.js - Pages
- Next.js - Data Fetching
- Next.js - ISR
- Next.js - Static File Serving
- Next.js - Pre-Rendering
- Next.js - Partial Pre Rendering
- Next.js - Server Side Rendering
- Next.js - Client Side Rendering
- Next.js Routing
- Next.js - Routing
- Next.js - Nested Routing
- Next.js - Dynamic Routing
- Next.js - Parallel Routing
- Next.js - Imperative Routing
- Next.js - Shallow Routing
- Next.js - Intercepting Routes
- Next.js - Redirecting Routes
- Next.js - Navigation and Linking
- Next.js Configuration
- Next.js - TypeScript
- Next.js - Environment Variables
- Next.js - File Conventions
- Next.js - ESLint
- Next.js API & Backend
- Next.js - API Routes
- Next.js - Dynamic API Routes
- Next.js - Route Handlers
- Next.js - API MiddleWares
- Next.js - Response Helpers
- Next.js API Reference
- Next.js - CLI Commands
- Next.js - Functions
- Next.js - Directives
- Next.js - Components
- Next.js - Image Component
- Next.js - Font Component
- Next.js - Head Component
- Next.js - Form Component
- Next.js - Link Component
- Next.js - Script Component
- Next.js Styling & SEO
- Next.js - CSS Support
- Next.js - Global CSS Support
- Next.js - Meta Data
- Next.js Advanced Topics
- Next.js - Error Handling
- Next.js - Server Actions
- Next.js - Fast Refresh
- Next.js - Internationalization
- Next.js - Authentication
- Next.js - Session Management
- Next.js - Authorization
- Next.js - Caching
- Next.js - Data Caching
- Next.js - Router Caching
- Next.js - Full Route Caching
- Next.js - Request Memoization
- Next.js Performance Optimization
- Next.js - Optimizations
- Next.js - Image Optimization
- Next.js - Lazy Loading
- Next.js - Font Optimization
- Next.js - Video Optimization
- Next.js - Script Optimization
- Next.js - Memory Optimization
- Next.js - Using OpenTelemetry
- Next.js - Package Bundling Optimization
- Next.js Testing
- Next.js - Testing
- Next.js - Testing with Jest
- Next.js - Testing with Cypress
- Next.js - Testing with Vitest
- Next.js - Testing with Playwright
- Next.js Debugging & Deployment
- Next.js - Debugging
- Next.js - Deployment
- Next.js Useful Resources
- Next.js - Interview Questions
- Next.js - Quick Guide
- Next.js - Useful Resources
- Next.js - Discussion
Next.js - revalidatePath() Function
The revalidatePath() Function
The Next.js revalidatePath()
function is used to remove cached data on-demand for a specific path.
Syntax
The syntax for the revalidatePath()
function is as follows:
import { revalidatePath } from 'next/cache' revalidatePath(path: string, type?: 'page' | 'layout'): void;
Parameters
The revalidatePath()
function accepts two parameters.
- path - string - The path to revalidate.
- type - (optional) 'page' or 'layout' string to change the type of path to revalidate.
Return Value
The revalidatePath()
function does not return any value.
Example 1
In the example below, we are using the revalidatePath() function to revalidate the path "/blog/post-1". This will remove the cached data for the "/blog/post-1" page.
import { revalidatePath } from 'next/cache' revalidatePath('/blog/post-1')
Example 2
The code below will revalidate any URL that matches the provided page file on the next page visit. This will not invalidate pages beneath the specific page. For example, /blog/[slug] won't invalidate /blog/[slug]/[author].
import { revalidatePath } from 'next/cache' revalidatePath('/blog/[slug]', 'page') // or with route groups revalidatePath('/(main)/blog/[slug]', 'page')
Example 3
The code below will revalidate any URL that matches the provided layout file on the next page visit. This will cause pages beneath with the same layout to revalidate on the next visit. For example, in the above case, /blog/[slug]/[another] would also revalidate on the next visit.
import { revalidatePath } from 'next/cache' revalidatePath('/blog/[slug]', 'layout') // or with route groups revalidatePath('/(main)/post/[slug]', 'layout')
Example 4
In the code below, we have a page that fetches posts from an API endpoint. We have a button that revalidates the cache when clicked.
import { revalidatePath } from 'next/cache' interface Post { id: number title: string body: string } async function getData() { const res = await fetch('https://jsonplaceholder.typicode.com/posts?_limit=3', { cache: 'no-cache' }) const posts: Post[] = await res.json() return { timestamp: new Date().toISOString(), posts, message: 'Posts will update when revalidated' } } async function handleRevalidate() { 'use server' revalidatePath('/') } export default async function Home() { const data = await getData() return ( <main> <h1>Path Revalidation Demo</h1> <div> <p>Last Updated: {data.timestamp}</p> <p>{data.message}</p> <div> {data.posts.map(post => ( <div key={post.id}> <h2>{post.title}</h2> </div> ))} </div> </div> <form action={handleRevalidate}> <button type="submit"> Fetch New Posts </button> </form> </main> ) }
Output
The image below shows the output of the code snippet above. When we click the button, the cache of the home page is revalidated, and new post is loaded.
