Code: Link
Output is as expected but the page only actually updates after two refreshes on the local build on my PC, and never on the hosted site.
src > app > api > revalidate > route.tsx
import { NextRequest, NextResponse } from 'next/server'
import { revalidateTag } from 'next/cache'
export async function GET(request: NextRequest) {
const tag = request.nextUrl.searchParams.get('tag')
revalidateTag(tag ?? "revalidate")
return NextResponse.json({ revalidated: true, now: Date.now() })
}
src > app > lib > cms.tsx
import type { PortfolioItem, SocialMediaLink } from '@/lib/types.d'
import 'server-only'
const baseUrl = process.env.CMS_API_URL
export const getAllPortfolioEntries = async () => {
try {
const response = await fetch(baseUrl + 'portfolio-entries?populate=*', { next: { tags: ['revalidate'] } });
if (!response.ok) {
throw new Error(response.statusText)
}
const entries = await response.json()
if (entries === null) {
throw new Error('No entries found')
}
return entries.data as PortfolioItem[]
} catch (error) {
console.error(error)
}
}
Console:
$ curl https://domain/api/revalidate?tag=revalidate
> {"revalidated":true,"now":16867717638}
$ curl https://localhost:30000/api/revalidate?tag=revalidate
> {"revalidated":true,"now":16867717638}