Default 는 Server. Hard requirement 일 때만 승격.
모든 component 작성할 때 이 tree 거쳐:
이게 필요해?
├── useState / useEffect / useReducer? → Client
├── onClick / onChange / onSubmit? → Client
├── Browser API (window, navigator)? → Client
├── Hook 요구 library? → Client
└── 위 다 아님? → Server ✓
"거의 server" 가 어떤 모양
전형적 Next.js app 에선 component 의 80~90% 가 Server Component. Page, list, card, header, footer, article, table — 다 server. State 나 event handler 들고 있는 leaf 만 'use client' 차고 있어.
실제 예
- Blog post page (content render) — Server.
- Search bar (controlled input) — Client.
- Markdown renderer (data shape) — Server.
- Theme toggle (localStorage write) — Client.
- Like button (optimistic UI) — Client wrapper, server data feed.