[React] 상태 관리 대전: Zustand(Flux) vs Jotai(Atomic) 아키텍처 비교 및 선택 가이드
📌 핵심 요약
- Redux의 복잡함(Boilerplate)에 지친 개발자들이 찾는 두 가지 대안
- Zustand: 중앙 집중식(Flux) 패턴, 직관적이고 가벼움 (Redux의 정신적 계승)
- Jotai: 분산형(Atomic) 패턴, 컴포넌트 중심의 상태 관리 (Recoil의 정신적 계승)
- 실무 프로젝트 성격에 따른 명확한 선택 기준 제시
지난 몇 년간 React 상태 관리의 왕좌는 Redux가 지키고 있었습니다. 하지만 Redux Toolkit(RTK)이 나왔음에도 여전히 설정해야 할 코드가 많고, Context API는 렌더링 최적화가 어렵다는 단점이 있습니다.
2026년 현재, 프론트엔드 씬은 "더 적은 코드로, 더 빠르게"를 지향합니다. 그 중심에 있는 두 라이브러리, Zustand(주스탠드)와 Jotai(조타이)를 해부해 봅니다.
1. Zustand: "가장 쉬운 Redux" (Flux 패턴)
Zustand는 독일어로 '상태'를 뜻합니다. Redux처럼 단일 스토어(Single Store) 방식을 따르지만, Provider로 앱을 감쌀 필요가 없다는 것이 혁명적입니다.
핵심 철학
- 단순함: Hook 기반으로 스토어를 생성하고 바로 사용합니다.
- 중앙 집중: 앱의 전역 상태를 한 곳에서 관리하기 좋습니다.
- 불변성 관리 최소화: Immer 미들웨어를 쓰면 불변성을 신경 쓰지 않고 상태를 변경할 수 있습니다.
2. Jotai: "Recoil의 경량화 버전" (Atomic 패턴)
Jotai는 일본어로 '상태'를 뜻합니다. (재미있게도 둘 다 이름 뜻이 같습니다.) Atomic 패턴을 따르며, 상태를 아주 작은 단위인 Atom(원자)으로 쪼개서 관리합니다.
핵심 철학
- Bottom-Up: 작은 상태 조각들을 조립해서 큰 상태를 만듭니다.
- React 친화적:
useState와 사용법이 거의 똑같습니다. - 파생 상태(Derived State): A 아톰이 변하면 B 아톰이 자동으로 계산되는 로직을 짜기 매우 쉽습니다.
3. 비교 및 선택 가이드
두 라이브러리 모두 훌륭하지만, 사용 목적이 조금 다릅니다. 프로젝트의 성격에 맞춰 선택하세요.
| 비교 항목 | Zustand (Flux) | Jotai (Atomic) |
|---|---|---|
| 멘탈 모델 | "중앙 타워에서 전체를 통제한다" | "레고 블록을 조립한다" |
| SSR 지원 | 설정이 조금 필요함 (Next.js) | 매우 자연스럽게 지원 (Hydration) |
| DevTools | Redux DevTools 사용 가능 👍 | 전용 디버거 제공 |
| 추천 상황 |
- 사용자 정보, 환경 설정 등 전역 데이터 - Redux에 익숙한 팀 |
- 엑셀 시트, 캔버스 등 복잡한 상호작용 - React Suspense 적극 활용 시 |
4. 결론
개인적인 추천으로는 일반적인 웹 서비스(어드민, 쇼핑몰, 커뮤니티)라면 Zustand가 압도적으로 편합니다. Redux DevTools를 그대로 쓸 수 있어 디버깅이 쉽고, 코드 구조가 명확하기 때문입니다.
반면, 그래픽 에디터, 대시보드 위젯처럼 컴포넌트 간의 의존성이 복잡하게 얽혀 있고 상태가 자주 변하는 앱이라면 Jotai가 더 나은 렌더링 성능과 개발 경험을 제공할 것입니다.