Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
World desk4 min

Does revalidateTag Work on a no-store Fetch? What Next.js Does—and Doesn’t—Tell You

A no-store fetch has no persistent Data Cache entry for revalidateTag to invalidate. Learn why the API gives no match result, how versions differ, and why local HMR can still show stale data.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

revalidateTag invalidates data stored under a tag; it does not make a cache: 'no-store' fetch enter the persistent Data Cache. If that fetch has no persistent tagged entry, there is nothing in that cache for the call to invalidate. And because revalidateTag returns no value, your code cannot use its result to learn whether a matching entry existed. This describes the documented Data Cache model—not a guarantee about every internal or future cache layer.

Why revalidateTag has nothing to invalidate

Next.js’s persistent Data Cache stores eligible fetch responses. The fetch option cache: 'no-store' prevents a request from being stored there, so that response cannot be a persistent Data Cache entry associated with a tag. Calling revalidateTag does not change the fetch’s cache setting or turn an uncached request into cached data.

As an Amazon Associate I earn from qualifying purchases.

Tags connect cached data to later invalidation. In the fetch API, next.tags associates tags with a fetch cache entry so that data can be revalidated on demand. The Next.js fetch reference documents a maximum of 256 characters per custom tag and up to 128 tags on a fetch. A tag matters only when corresponding cached data was tagged.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

So if a fetch is deliberately uncached, adding a tag or calling revalidateTag does not create a persistent tagged entry. If you need tag-based invalidation, first use a caching approach that stores the relevant data and attaches the tag using the API for your Next.js caching model.

Does revalidateTag tell you whether a tag matched?

No return value is available to report a match. The Next.js 15 API reference explicitly says that revalidateTag “does not return any value.” Do not treat a successful call as proof that cached data existed or was invalidated; the API does not provide that confirmation.

That Next.js 15 reference documents the versioned signature revalidateTag(tag: string): void. In the current Cache Components guide, the recommended form is revalidateTag(tag, 'max'), which uses stale-while-revalidate behavior. The function is available in Server Actions and Route Handlers in that guide. Check your app’s version and caching model rather than assuming these signatures or timing rules are interchangeable.

What to check when data still looks stale

  1. Inspect the fetch options. Find the request and check whether it uses cache: 'no-store' or next.revalidate: 0. The fetch reference documents no-store as preventing storage in the Data Cache.
  2. Verify the tagging path. For cached fetch data, confirm the entry is associated with the tag you invalidate through next.tags, or use the appropriate tagging API for Cache Components. A spelling mismatch or a tag attached to different data will not target the entry you intended.
  3. Identify the framework model and version. The current Cache Components guide, the previous caching model, and the versioned Next.js 15 reference describe different APIs or behavior. Use the reference for the model your app actually runs: Cache Components, the previous caching model, or the Next.js 15 API reference.
  4. Separate invalidation from refresh timing. In the current Cache Components guide, revalidateTag(tag, 'max') uses stale-while-revalidate semantics: stale data may be served while fresh data is fetched. That is not the same as an immediate guarantee that the next read will return newly fetched data.
  5. Check whether the symptom is limited to local development HMR. Next.js has a separate Server Components HMR cache that can retain fetch responses across hot-module refreshes, including responses from uncached fetches. The HMR cache configuration reference notes that uncached requests may not show fresh data between HMR refreshes. Try navigation or a full-page reload, which clears that cache, and inspect fetch logging to observe requests.

Why an uncached fetch can look cached during development

The development Server Components HMR cache is distinct from the persistent Data Cache. Its purpose is to reuse fetch responses across HMR refreshes; therefore, seeing an old response after a code edit does not by itself prove that revalidateTag failed or that a persistent tagged entry exists. The configuration reference documents that the HMR cache can be disabled with serverComponentsHmrCache: false. This is a development behavior, not a reason to infer that production no-store requests are stored in the persistent Data Cache.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Choose the right fix for the behavior you want

  • You want every request to fetch without persistent Data Cache storage: keep cache: 'no-store'. There is no persistent tagged fetch entry for revalidateTag to invalidate.
  • You want cached data that can be invalidated by tag: cache the relevant data and attach the tag through the API for your caching model, then call the matching revalidateTag form from a supported context.
  • You see stale results only during local HMR: test after navigation or a full reload, and use fetch logging to distinguish HMR reuse from persistent caching.

The previous-model caching guide is useful when an app has not adopted Cache Components; do not apply the current guide’s signature or refresh semantics to an older model without checking its documentation.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.