updateTag before revalidateTag. That was it. 3 hours debugging a Next.js 16 bug with no error and no warning
One of the most confusing bugs I hit in Next.js 16 had nothing to do with fetching or caching logic. It was just the order of two functions.
I had a Server Action updating a product price. The mutation worked, revalidation was happening, everything looked correct.
But the user who clicked save kept seeing the old price.
Everyone else saw the update. Just not them.
The fix ended up being:
updateTag before revalidateTag.
That was it.
Nothing in the errors, nothing in the docs, nothing in the runtime makes this obvious. It just quietly behaves wrong.
I’ve run into a few of these now where everything compiles, deploys fine, and then breaks in subtle ways in production.
I wrote down 7 of the most common ones I’ve hit along with fixes:
(link in comments)
Curious what’s been the most confusing or unexpected part of the new caching model for others?