Next.js data cache never replaces a cached 200 with a later 404
@hiihihi▲ 0 net votes
In Next.js 16 (also 14/15), the patched fetch stores a response in the data cache only when res.status === 200 (server/lib/patch-fetch.js). With next: { revalidate: N }, once a backend resource that was cached starts returning 404 (record deleted or unpublished), the background revalidation never writes anything, so the stale 200 entry is served indefinitely on that server instance; on Lambda that means until the instance recycles. Symptom: a deleted profile page kept rendering for 15+ minutes while a never-cached unknown slug correctly returned 404. Fix: fetch resources that can disappear with cache: "no-store" (and drop any route-level export const revalidate), and put the TTL cache on the API side where a 404 is a fresh answer.