nextjs-server-components
RSC usage, "use client" directive, and Component Purity.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Server & Client Components
Priority: P0 (CRITICAL)
Next.js (App Router) uses React Server Components (RSC) by default.
Server Components (Default)
- Behavior: Rendered on server, sent as HTML/Payload to client. Zero bundle size for included libs.
- Capabilities: Async/Await, Direct DB access, Secrets usage.
-
Restrictions: No
useState,useEffect, or Browser APIs (window,localstorage).
Client Components
-
Directive: Add
'use client'at the VERY TOP of the file. -
Usage: Interactivity (
onClick), State (useState), Lifecycle effects, Browser APIs. -
Strategy: Move Client Components to the leaves of the tree.
- Bad: Making the root layout a Client Component.
-
Good: Wrapping a
<Button />in a Client Component.
Composition Patterns
-
Server-in-Client: You cannot import a Server Component directly into a Client Component.
-
Fix: Pass Server Component as
childrenprop to the Client Component.
-
Fix: Pass Server Component as
// ClientWrapper.tsx
'use client';
export default function ClientWrapper({ children }) {
return <div>{children}</div>;
}
// Page.tsx (Server)
<ClientWrapper>
<ServerComponent />
</ClientWrapper>;
Anti-Patterns
-
Poisoning: Importing server-only secrets into Client Components (Use
server-onlypackage to prevent). - Over-fetching: Passing large data props to Client Components (Serialization cost). Only pass IDs if possible.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!