# Dependencies — 필요가 도착하면 답은 이미 정해져 있다

새 라이브러리를 "그때그때 고르는" 것을 막는 사전 결정 표. **표에 없는 의존성을 추가하려면**: 표준(아래 지정 lib)으로 불가능한 이유를 명시하고, **이 표에 칸을 추가하는 것 자체가 결정 기록**이다. knip `ignoreDependencies`(사전 탑재분)와 함께 관리한다.

| 필요                          | 기본 경로 (먼저 이걸로)                           | 승격 트리거                  | 트리거 시 지정 lib (탑재됨)                 |
| ----------------------------- | ------------------------------------------------- | ---------------------------- | ------------------------------------------- |
| 서버 데이터                   | TanStack Query + 쿼리 팩토리 (query-factory 스킬) | —                            | —                                           |
| 폼                            | RHF + zod (`CreatePostDialog` 골든샘플)           | —                            | —                                           |
| 표                            | 수제 `<table>` + shared/ui Table                  | 정렬·필터·컬럼 제어가 2개+   | `@tanstack/react-table` (headless만)        |
| 차트                          | 숫자·텍스트 요약 먼저                             | 시각화가 명시 요구될 때      | `recharts` (shared/ui chart 경유)           |
| 날짜                          | —                                                 | 표시·연산 필요 즉시          | `dayjs` (native Date 금지 — code-smell #13) |
| URL 상태 (필터·탭·페이지)     | `nuqs`                                            | —                            | —                                           |
| 유틸 (그룹·정렬·중복 제거 등) | 한 줄이면 직접                                    | 2줄 넘는 로직                | `es-toolkit`                                |
| 쿼리스트링 직렬화             | `nuqs`가 기본                                     | 외부 URL 조립 시             | `qs`                                        |
| 클라 전역 상태                | 없앨 수 있는지 먼저 (component-modeling 4질문)    | URL·서버·props로 불가할 때만 | `zustand`                                   |
| 애니메이션                    | `tw-animate-css` 클래스                           | 로티 에셋을 실제로 받았을 때 | `lottie-react` (미탑재 — 그때 설치)         |
| 모달·오버레이                 | `overlay-kit` + shared/ui Dialog (P-038.1)        | —                            | —                                           |
| 아이콘                        | `lucide-react` (인라인 svg 금지 — slop)           | —                            | —                                           |
| 드래그앤드랍 (칸반·재정렬)    | 버튼·셀렉트로 이동 먼저 (드래그는 필수 아님)      | 칸반·보드형 이동이 명시 요구 | `@dnd-kit/core` (미탑재 — 그때 설치)        |

금지: moment(→dayjs), lodash(→es-toolkit), axios(→ky, shared/api 경유), styled-components/emotion(→Tailwind), AG Grid류 스타일 강제 grid(→react-table headless).
