next.js
17b09f82 - Fix on-demand revalidation with `"use cache"` in dev mode (#76122)

Commit
1 year ago
Fix on-demand revalidation with `"use cache"` in dev mode (#76122) This PR is a follow-up to #76100 that enables on-demand revalidation via an API route in development mode. This is accomplished by implementing three changes: 1. We need to forward the user cookies, including the `__next_hmr_refresh_hash__` value, which is required to generate the same cache key _during_ the revalidation as _before_ and, more importantly, _after_ the revalidation. Otherwise the revalidated cache entries will use a different cache key (without the refresh hash), and on subsequent page reload, the stale cached data would still be shown (using the cache key with refresh hash). 2. When checking if a `revalidate()` call succeeded, we allow `200` responses in general, and only check the `'x-nextjs-cache'` header for `404` response. This matches the historic intent of the feature. ([x-ref-1](https://github.com/vercel/next.js/pull/36108/files#diff-8d464ed8b3d6ed08deabeaa05180900c38f8943d75368798861d1734103512fcR338-R342), [x-ref-2](https://github.com/vercel/next.js/pull/34826/files#diff-8d464ed8b3d6ed08deabeaa05180900c38f8943d75368798861d1734103512fcR318-R324)). 3. The `isOnDemandRevalidate` status is now also set for non-`isSSG` pages, based on the `'x-prerender-revalidate'` header. This matches the logic in the incremental cache handler, which enables cache revalidation in dev mode when using `unstable_cache`.
Author
Parents
Loading