--- name: Next.js Server Components description: RSC usage, "use client" directive, and Component Purity. metadata: labels: [nextjs, rsc, components] triggers: files: ['app/**/*.tsx', 'src/app/**/*.tsx', 'app/**/*.jsx', 'src/app/**/*.jsx'] keywords: [use client, Server Component, Client Component, hydration] --- # 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. ## 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 `