Vercel is serving an old page. A redeploy may not be enough.
Vercel caches whole responses on its CDN, and keeps a separate runtime cache for data. A new deployment gets a new cache key, which looks like a purge and is not one: Image Optimization and ISR content carry over.
Not sure this is the layer? Paste your URL and the checker reads the headers for you.
Check my siteHow to tell it’s Vercel
Vercel sends x-vercel-cache on every response. There are six values. source
HITServed from the cache. If the page is old, this is your layer.MISSNot in the cache, so it was generated by your function or origin.STALEA cached copy was served while Vercel refreshed it in the background.PRERENDERServed from static storage.REVALIDATEDRegenerated in the foreground after the cached entry was deleted.BYPASSVercel skipped the cache and served fresh content.Don’t over-read a MISS. Vercel’s docs warn that for dynamic routes and fetches using the runtime cache, this header “often shows MISS even if the data is served from the runtime cache”. source The runtime cache is regional and persists across deployments. source
How to clear it
- Dashboard: open your project, choose CDN in the sidebar, then Caches. Under Purge cache pick what to purge and press Purge. Invalidate marks a tag stale and refreshes in the background; Delete revalidates in the foreground and Vercel does not recommend it.
*purges the whole project. source - CLI:
vercel cache purge, or narrow it with--type cdnor--type data. By tag:vercel cache invalidate --tag blog-posts. source - Next.js, in code:
revalidatePath(),revalidateTag()orupdateTag(). source
If the old page comes straight back
- You redeployed and expected a purge. Each deployment has its own cache key, so a promotion sidesteps the old cache rather than clearing it — and Vercel notes that purging also clears Image Optimization and ISR content, “which is usually preserved between deployments”. source
- You shortened
Cache-Controland nothing changed. On Vercel,Vercel-CDN-Cache-Controlhas top priority,CDN-Cache-Controlalways overridesCache-Control, andCache-Controlcomes last. Fix the header that actually wins. source - Static files. They are cached on Vercel’s network for the lifetime of the deployment after the first request, and Vercel does not allow bypassing the cache for them by design. source
Working without it for a while
There is no global development mode for the CDN, but a request carrying Pragma: no-cache — which browsers send with devtools open — makes Vercel revalidate a stale resource synchronously. Draft Mode also produces BYPASS. source
Other fix guides
Sources
Every step above was written from these pages, read on 14 Sep 2026. Vendors move buttons; if one has moved, the source page will say where.