We are seeing reproducible conditional-request errors on the Vercel CDN for a production Next.js 16.2.10 application.
The issue remained after vercel cache purge --type cdn --yes reported success, and it also reproduces on a subsequent fresh production deployment.
Expected HTTP semantics:
- A stale
If-Matchvalidator should return412 Precondition Failed. Range: bytes=0-63with a staleIf-Rangevalidator should ignore the range and return the full200representation.
Observed on wassel.ma:
- Three consecutive passes across
manifest.webmanifest, a hashed JavaScript chunk, a hashed CSS chunk, andicon-512.pngreturned staleIf-Match = 200on 12/12 requests. - The same matrix returned stale
If-Range = 206on 12/12 requests. - Current validators are handled correctly.
- Fresh
MISSresponses are handled correctly. - The incorrect responses are
x-vercel-cache: HIToncdg1.
Minimal reproduction:
curl -sS -D - -o /dev/null -H 'If-Match: "intentionally-stale-validator"' https://wassel.ma/manifest.webmanifest
curl -sS -D - -o /dev/null -H 'Range: bytes=0-63' -H 'If-Range: "intentionally-stale-validator"' https://wassel.ma/manifest.webmanifestFresh examples from 2026-07-19:
- stale If-Match returned
200 HIT:cdg1::hqpkw-1784478999017-49df95234265 - stale If-Range returned
206 HIT:cdg1::cdcm6-1784478999202-077b61276aaf - hashed JS stale If-Match returned
200 HIT:cdg1::j75fp-1784478999384-76a3de3b5723 - hashed JS stale If-Range returned
206 HIT:cdg1::4l87l-1784478999607-1f462757a4a6 - PNG stale If-Match returned
200 HIT:cdg1::vhs9c-1784479000181-8263a82ed3f9 - PNG stale If-Range returned
206 HIT:cdg1::hvhdx-1784479000408-3cf8b7f9b52d
A CSS stale If-Match request in the same run reached MISS and correctly returned 412, which further isolates the difference to the CDN HIT path.
Could the CDN team inspect conditional-header evaluation/cache-key handling for If-Match and If-Range on cdg1, and advise a durable configuration or platform fix? Repeating the global purge is not a durable remediation because the behavior regenerated on new cached objects.