Nextjs server components
Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/nextjs-server-components
RSC usage, ''use client'' directive, and Component Purity. Use when working with React Server Components or deciding where to place the ''use client'' boundary. (triggers: app/**/*.tsx, src/app/**/*.tsx, app/**/*.jsx, src/app/**/*.jsx, use client, Server Component, Client Component, hydration)From its SKILL.md
npx -y skills add ComeOnOliver/skillshub --skill nextjs-server-componentsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
2.7 KB, 561 tokens by cl100k_base, as published. Nobody here has run it
Server & Client Components
Priority: P0 (CRITICAL)
[!WARNING] If the project uses the
pages/directory instead of the App Router, ignore this skill entirely.
Next.js (App Router) uses React Server Components (RSC) by default.
Implementation Guidelines
-
Next.js Default: Use React Server Components (RSC) for 90% of your UI. Leverage
async componentsfor direct data fetching. -
Client Boundary: Only use the
'use client'directive for interactivity (e.g.,onClick), hooks (useState,useEffect), or browser APIs. Place the boundary at the leaf nodes to maximise RSC benefits and server-side rendering. -
Composition: Use
<ClientWrapper><ServerDataComponent /></ClientWrapper>to pass Server Components aschildrento Client Components. Avoid Circular Dependencies between server and client. Direct database access:await db.queries inside async RSCs, andawait paramsbefore accessing route segments. -
Data Fetching: Use
fetchwithcache: 'no-store'orrevalidate: 0to opt out of static rendering when needed. -
Loading & UI: Use
Suspensetriggers around slow async components to enable Streaming and better UX. Useloading.tsxfor route-level loading states. -
Serialization: Ensure all props passed from Server to Client are Serializable (No functions, Dates, or Classes).
-
Security: Never share secrets or server-only logic within Client Components. Use
server-onlypackage to enforce this. -
Hydration: Server sends HTML + RSC payload (JSON); client hydrates only Client Components. Server Components produce zero JS in the client bundle — no useState/useEffect shipped to browser.
-
Server-in-Client: You cannot import a Server Component directly into a Client Component.
- Fix: Pass Server Component as
childrenprop to the Client Component. See Composition Example.
- Fix: Pass Server Component as
Anti-Patterns
- No secrets in Client Components: Use
server-onlypackage to prevent accidental bundling. - No full DB objects passed to client: Minimize serialized props; pass IDs when possible.
- No
useState/useEffectin Server Components: These are Client Component-only hooks. - No
'use client'at tree root: Push the boundary to leaf components.
References
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.