Is Next.js 16 cache actually working with dynamic pages?
I'm trying the new cache system in Next.js 16 App Router ("use cache", cacheTag, updateTag, etc.) and honestly I'm not sure if caching is actually stable yet with dynamic pages and searchParams.
Sometimes it works.
Sometimes navigating between query params keeps stale UI.
Sometimes Suspense fallback doesn't trigger.
Sometimes invalidation works only after refresh.
I had the same confusion with Next.js caching.
The docs explain the APIs separately, but real apps combine:
- search params
- pagination
- cache tags
- dynamic badges
- Server Components
and that’s where things get confusing.
After a lot of experimenting, I built a practical skill/tutorial explaining the caching architecture from a real-world perspective:
- preventing cache explosion
- caching filters/pagination
- dynamic badge strategies
- static vs dynamic rendering
- scalable cache invalidation
The docs are good for reference, but understanding caching properly really takes experimentation.
Skill Link:
https://www.skills.sh/mohamed-hossam1/nextjs-cache-architecture/nextjs-cache-architecture
GitHub repo:
https://github.com/mohamed-hossam1/nextjs-cache-architecture