Nextjs caching
Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/nextjs-caching
🧠The right skill, one API call. AI agent skills registry with token-efficient skill resolution. 5,000+ skills from 500+ top repos.
npx -y skills add ComeOnOliver/skillshub --skill nextjs-cachingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
The 4 layers of caching in Next.js. Use when configuring request memoization, data cache, full-route cache, or router cache in Next.js. (triggers: **/page.tsx, **/layout.tsx, **/action.ts, unstable_cache, revalidateTag, Router Cache, Data Cache)
SKILL.md
2.6 KB, as published. Nobody here has run it
Caching Architecture
Priority: P1 (HIGH)
Next.js has 4 distinct caching layers. Understanding them prevents stale data bugs.
Implementation Guidelines
- Next.js 15+ Standard: Use
fetchwithrevalidate: numberorcache: 'force-cache'for API calls. Useunstable_cacheor the new'use cache'(experimental) for custom data stores. - Layers: Distinguish between Data Cache (persistent across requests) and Request Memoization (React's lifecycle specific). Use
cache()from React to deduplicate fetches within a single render. - Invalidation: Use
revalidatePath('/')after mutations orrevalidateTag('tag-name')for granular cache purging. - Client Cache: Understand the Router Cache (in-memory on client) and its 30s-min lifespan. Clear it using
router.refresh(). - Static Assets: Leverage
generateStaticParamsfor pre-rendering static routes at build time. Use ISR (Incremental Static Regeneration) for content that updates periodically. - Streaming: Combine
Suspensewithfetchtriggers to prevent slow data from blocking the entire page render. - Next.js 16+: Favor
'use cache'andcacheLife()overrevalidate: numberwhere available for deterministic caching.
| Layer | Where | Control |
|---|---|---|
| Request Memoization | Server | React cache() |
| Data Cache | Server | 'use cache', revalidateTag |
| Full Route Cache | Server | Static Prerendering |
| Router Cache | Client | router.refresh() |
Implementation Details
See Cache Components & PPR for detailed key generation, closure constraints, and invalidation strategies.
Anti-Patterns
- No
unstable_cachein Next.js 16+: Use'use cache'directive withcacheLife()instead. - No
router.refresh()for server data: PreferrevalidateTag()for targeted cache busting. - No caching user-specific data at route level: Wrap personal data in
<Suspense>with'use cache'. - No long-lived cache without tags: Assign
cacheTag()for fine-grained invalidation control.