React CSS 전략 — Tailwind · Modules · CSS-in-JS
3 전략 중 무엇을 언제. 2026 년 트렌드와 회사 stack 기준 권장.
React 컴포넌트의 스타일을 어디에 두냐. 일반 CSS 파일? 컴포넌트 안 JS? 유틸리티 클래스만? 답이 하나가 아니다. 2026 년 기준 3 대 전략 — Tailwind CSS·CSS Modules·CSS-in-JS — 가 시장을 나눈다.
이번 19편은 3 전략의 정확한 비교 + 회사 stack 기준 권장 + 마이그레이션 패턴. 신규 프로젝트면 거의 무조건 Tailwind 가 답이지만 그 이유를 정확히.
1. 3 전략 한 줄 정리
| 전략 | 한 줄 | 예시 |
|---|---|---|
| Tailwind CSS | 유틸리티 클래스를 JSX 에 직접 박음 | <div className="flex gap-4 p-6 bg-white"> |
| CSS Modules | 파일별 스코프 CSS, 클래스명 자동 고유화 | import s from './X.module.css'; <div className={s.card}> |
| CSS-in-JS | JS 안에서 CSS 작성 (styled-components 등) | const Card = styled.div`padding: 24px;`; |
2. Tailwind — 2026 년 1순위 권장
처음 보면 "어우 클래스 너무 많아" 거부감 자연스럽다. 하지만 실전 1주만 쓰면 다른 방식으로 돌아갈 이유가 사라진다.
3. CSS Modules — Tailwind 가 부담스러우면
빌드 시 s.card 가 _Card_module__card_a4b3c 같은 고유 이름으로 변환. 다른 파일의 .card 와 충돌 안 함. 일반 CSS 의 한계 (글로벌 네임스페이스) 를 깨끗이 해결.
적합 — CSS 문법에 익숙한 개발자, Tailwind 학습이 부담, 디자이너가 직접 CSS 작성하는 환경. Vite 가 기본 지원.
4. CSS-in-JS — 트렌드 하락
styled-components·Emotion 으로 대표되는 패턴. 2018~2022 황금기 → 2023 이후 빠르게 쇠퇴.
5. 선택 가이드 + 마이그레이션
| 상황 | 권장 |
|---|---|
| 신규 프로젝트 | Tailwind 우선. 디자인 시스템·번들 크기·생산성 압도 |
| 대형 디자인 팀 (디자이너 직접 작성) | CSS Modules. CSS 그대로라 디자이너 친화 |
| styled-components 기존 코드 | 유지하며 신규 부분만 Tailwind 점진 도입 |
| Next.js App Router | Tailwind 또는 CSS Modules. CSS-in-JS 피하기 |
| 완성된 디자인 시스템 컴포넌트 라이브러리 필요 | shadcn/ui (Tailwind 기반) |
마이그레이션 팁 — Tailwind 는 다른 CSS 와 충돌 없음. 새 컴포넌트는 Tailwind, 기존은 그대로 두는 점진 도입이 가장 안전. styled-components 에서 한 번에 전환은 비용 큼 — 컴포넌트 5개 정도 변환한 뒤 팀이 합의되면 본격 진행.
19편으로 React 의 "보이는" 부분 정리 완료. 20편부터는 안정성 — TypeScript 통합으로 React 의 진짜 production 코드 만드는 법.
다음 글
React 교재 20편 — TypeScript 통합. .tsx 파일, Props 타입, 제네릭 컴포넌트, 흔한 타입 패턴 7가지.