日本語

Vercel deploy finished but the site didn’t update? Use this checklist

Main visual

Vercel shows a green check, but the browser still serves stale pages. That usually means a cache, DNS, or operational gap—not a mysterious bug. Below is a practical, high-repro checklist arranged from viewer-side to delivery to build/app so you can isolate the culprit without endless redeploys.

Start here (highest priority)

1) Verify you’re on the Production URL

  • Make sure you aren’t viewing a Preview Deployment link.
  • In the Vercel dashboard, confirm the latest deployment is tied to Production.
  • If you use Promote flows, check that the intended preview was promoted.

2) Kill browser cache first

  • Open a private/incognito window and hard-reload.
  • If possible, test from another network or device.

3) Rule out external CDN/DNS

  • If Cloudflare or another CDN fronts Vercel, purge/disable its cache temporarily.
  • Confirm the domain’s DNS points to the latest Production Deployment (no stale CNAME/IP).
  • Try hitting from another region to see if only some edges are stale.

When the cache is stuck on Vercel’s side

Edge Network cache (global CDN)

  • Vercel’s own edge may serve older assets regionally right after deploy.
  • Double caching is common when an external CDN sits in front of Vercel. Fix: Temporarily bypass the external CDN and compare regions.

Data cache / Next.js data cache

  • Common symptom: HTML updates, but data shown is old.
  • Causes: fetch cache, ISR settings, or revalidate intervals.
  • If revalidation fails, stale data keeps serving; revalidateTag/Path is not magic. Fix: Trigger revalidation, check logs, and consider shorter revalidate or on-demand revalidation.

Operational oversights to check

Not promoted

  • A successful build isn’t production until promoted (when using Promote flows).

Build cache hiding changes

  • Re-deploying the same commit can reuse the build cache and hide asset changes.
  • Disable build cache for the redeploy, or use VERCEL --force / VERCEL_FORCE_NO_BUILD_CACHE=1.

Git integration gaps

  • The commit might not be in the Production branch, or deploys might be blocked by team/permission rules.
  • Confirm the deployment for the commit exists and is marked Production in the Vercel dashboard.

Next.js (ISR/App Router) specifics

ISR regeneration failing

  • If regeneration throws, the old page keeps serving. Check function and build logs for the route.

Cache-layer mismatch

  • Determine whether the stale part is the rendered HTML or the fetched data. Fix the exact layer instead of redeploying blindly.

Quick isolation flow

  • Confirm Production URLbrowser cacheexternal CDN/DNS.
  • Then check Vercel edge/data cache behavior.
  • Finally validate Promote/build cache/Git and ISR design.

Most “not reflected” cases are cache-layer drift or an operational miss. Follow the order above and you can resolve calmly without repetitive deployments.

Related posts