Agent-skills-standard nextjs-data-fetching
Implement Fetch API, Caching, and Revalidation strategies in Next.js. Use when fetching data, configuring cache behavior, or implementing revalidation in Next.js. (triggers: **/*.tsx, **/service.ts, fetch, revalidate, no-store, force-cache)
install
source · Clone the upstream repo
git clone https://github.com/HoangNguyen0403/agent-skills-standard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HoangNguyen0403/agent-skills-standard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/nextjs/nextjs-data-fetching" ~/.claude/skills/hoangnguyen0403-agent-skills-standard-nextjs-data-fetching && rm -rf "$T"
manifest:
skills/nextjs/nextjs-data-fetching/SKILL.mdsource content
Data Fetching (App Router)
Priority: P0 (CRITICAL)
[!WARNING] Covers App Router
only. Forfetchdirectory: usepages//getServerSideProps. Ignore nativegetStaticPropscaching advice below.fetch
Fetch data directly in Server Components using
async/await.
Strategies
- Static: Build-time.
.fetch(url, { cache: 'force-cache' }) - Dynamic: Request-time.
orfetch(url, { cache: 'no-store' })
.cookies() - Revalidated:
.fetch(url, { next: { revalidate: 60 } })
Patterns
- Direct Access: Call DB/Service layer directly. ** not fetch your own /api routes.** Example:
export default async function Page() { const user = await db.user.findUnique({ where: { id }, select: { id: true, name: true } }); } - Colocation: Fetch exactly where data needed.
- Parallel: Use
to prevent waterfalls.Promise.all() - Client-Side: Use SWR/React Query for live/per-user data (no SEO).
Revalidation
- Path:
- Purge cache for route.revalidatePath('/path') - Tag:
- Purge by tag.revalidateTag('key')
Anti-Patterns
- No root-level awaits: Wrap slow fetches in
to avoid blocking.<Suspense> - No
for data fetching: Use SWR or React Query for client-side data.useEffect - No internal API calls from RSC: Fetch from DB/service layer directly.