4장 — 경계 설계
use client를 아래로, 작게.
이것만 지켜도 번들과 성능 문제의 대부분이 사라진다.
시험 직전에 이 장만 다시 봐도 되게
공통 태도는 추상화를 얇게 유지한다는 것. 그래서 셋을 겹쳐 써도 서로를 가리지 않는다.
4장 — 경계 설계
use client를 아래로, 작게.
이것만 지켜도 번들과 성능 문제의 대부분이 사라진다.
12장 — 디자인 토큰
:root에 값, @theme inline에 연결, 컴포넌트는 이름만 안다.
이 구조가 있어야 17장이 가능해진다.
16장 — 자산화
ui/ · shared/ · _components/ 세 층.
ui/는 도메인을 모른다.
use client → 앱 전체가 클라이언트가 된다`text-${c}-500`은 빌드 시점에 존재하지 않는다cssVariables: false로 init → 되돌리기 매우 어렵다flowchart LR
A["1. 레이아웃 use client"] --> R1["언제든 고칠 수 있다"]
B["2. 동적 클래스 조립"] --> R1
D["4. 인증 누락"] --> R2["즉시 고쳐야 한다 ⚠️"]
C["3. 원시 색 하드코딩"] --> R3["되돌리기 비쌈 🔒"]
E["5. cssVariables: false"] --> R3
classDef mute fill:#f1f5f9,stroke:#94a3b8,color:#334155
classDef bad fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
classDef warn fill:#fef3c7,stroke:#d97706,color:#78350f
class R1 mute
class R2 bad
class R3 warn
class A,B,C,D,E mute
3번과 5번은 되돌리기가 특히 비싸다. 프로젝트 시작 시점에 한 번만 신경 쓰면 되는 것들이다.
| 장 | 한 줄 |
|---|---|
| 1 지형도 | 세 도구는 경쟁하지 않는다. 컴포넌트 / 스타일 언어 / 실행 환경 |
| 2 서버 컴포넌트 | use client는 스위치가 아니라 경계다 |
| 3 App Router | 폴더가 URL. layout은 이동해도 리렌더되지 않는다 |
| 4 경계 설계 | 경계를 아래로, 작게. Provider는 도넛 패턴 |
| 5 데이터 | 쓰는 컴포넌트가 직접 조회한다 → 병렬이 된다 |
| 6 캐싱 | 기본은 캐시 안 함. use cache + cacheLife로 명시 |
| 7 뮤테이션 | Server Function은 공개 엔드포인트다 |
| 8 성능 | LCP · INP · CLS. 서버 컴포넌트화가 1순위 |
| 9 CSS의 문제 | 전역 네임스페이스 · 특이도 · 못 지우는 코드 |
| 10 Tailwind v4 | 설정이 CSS로. 클래스 이름은 정적이어야 한다 |
| 11 실전 | cn() = clsx + tailwind-merge. @apply는 안 쓴다 |
| 12 토큰 | 값이 아니라 결정에 이름을 붙인다 |
| 13 shadcn/ui | 라이브러리가 아니라 코드 배송 시스템 |
| 14 설치 | cssVariables: true. 나중에 못 바꾼다 |
| 15 해부 | cva → cn → props 통과. 원시 색이 없다 |
| 16 자산화 | 세 층. ui/는 도메인을 모른다 |
| 17 DS 적용 | 대부분 토큰 매핑. ⚠️ 갭이 실제 작업량 |
| 18 접근성 | 공짜로 받는 것을 깨뜨리지 않기 |
| 19 폼·상태 | 서버 / URL / 폼 / UI 네 종류로 나눈다 |
| 20 실전 | 작은 화면 하나부터. 전면 전환은 실패한다 |
| 버전 | 기억할 것 | |
|---|---|---|
| Next.js | 16.3 | proxy.ts, Cache Components, Turbopack 기본 |
| React | 19.2 | forwardRef 불필요, Compiler 1.0 |
| Tailwind | 4.3 | @theme, 설정 파일 없음, oklch |
| shadcn CLI | 3.x | Base UI 기본, 8가지 style, 레지스트리 |
| Base UI | 1.6+ | render 프롭, Positioner 분리 |
공식 문서
nextjs.org/docs — 특히 Caching, Server Components
tailwindcss.com/docs — Theme, Functions and Directives
ui.shadcn.com/docs — Registry, Theming, Changelog
base-ui.com — 프리미티브 API
깊이 파볼 주제
부분 프리렌더링(PPR)의 내부 동작.
자체 레지스트리 + CI 연동.
Figma Variables → 토큰 자동 생성.
시각 회귀 테스트 (Playwright + 스냅샷).
React Compiler 적용 결과 측정.
특히 ui.shadcn.com/docs/changelog는 주기적으로 볼 가치가 있다. 이 생태계에서 가장 빠르게 움직이는 부분이다.
이 스택의 진짜 이점은 속도가 아니라 디자인이 바뀔 때 드는 비용이 작다는 것이다.