

그럼 Zustand는 왜 덜 위험한가
— Context가 무너지는 지점을 정확히 피해 간 구조
앞 글에서 결론은 이거였다.
Context는 전달 도구이지
상태 관리 도구가 아니다.
그럼 자연스럽게 다음 질문이 생긴다.
“비슷하게 전역으로 쓰이는데
왜 Zustand는 덜 위험하다고 느껴질까?”
이건 감정 문제가 아니다.
구조 차이다.
1️⃣ Zustand의 출발점은 React가 아니다
이 한 문장이 핵심이다.
Zustand의 상태는
React 컴포넌트 트리 ‘밖’에 있다
const useStore = create(set => ({
count: 0,
increase: () => set(s => ({ count: s.count + 1 })),
}));
여기서 중요한 점:
- 이 store는 컴포넌트가 아니다
- Provider도 아니다
- 생명주기가 React와 분리돼 있다
👉 Context처럼 “부모가 바뀌면 흔들리는 구조”가 아니다
2️⃣ Context vs Zustand의 가장 큰 차이: 구독 방식
Context의 구독 모델
Provider value 변경
→ 모든 Consumer 렌더 후보
선택권이 없다.
Zustand의 구독 모델
const count = useStore(state => state.count);
이 한 줄의 의미는 이거다.
“store 전체 말고
이 조각만 보고 싶다”
- count가 바뀔 때만 렌더
- 다른 상태 변경에는 반응 ❌
👉 부분 구독(selective subscription)
이 차이 하나로
렌더링 폭발 가능성이 급격히 줄어든다.
3️⃣ “상태 변경 위치가 보인다”는 감각
Context를 쓰다 보면 이런 느낌이 든다.
“이 값… 어디서 바뀌지?”
Zustand는 다르다.
increase: () => set(s => ({ count: s.count + 1 }))
상태 변경은:
- store 안에 모여 있고
- 함수 이름으로 의도가 드러나고
- 로직이 한 군데 있다
👉 상태 변경의 ‘주소’가 명확하다
Reduxほど 강제적이지 않지만
Context보다는 훨씬 추적 가능하다.
4️⃣ 생명주기가 꼬이지 않는다
Context 상태의 전형적인 문제:
- 페이지를 벗어나도 상태가 남음
- 언제 초기화할지 애매함
Zustand는 이걸 의식적으로 선택하게 만든다.
reset: () => set({ count: 0 })
- 언제 초기화할지
- 누가 초기화할지
👉 명시적으로 결정하게 만든다
이게 중요하다.
암묵적인 전역보다
명시적인 전역이 덜 위험하다.
5️⃣ 그래서 Zustand가 “전역처럼 써도 덜 무너진다”
정리하면 Zustand가 안전한 이유는 이거다.
- React 트리 밖에 있다
- 부분 구독이 기본이다
- 상태 변경 로직이 모인다
- 생명주기를 명시한다
- 규칙은 최소지만 구조는 있다
Context는:
- 편하지만
- 통제 장치가 없다
Zustand는:
- 자유롭지만
- 최소한의 안전벨트가 있다
6️⃣ 그렇다고 Zustand가 만능은 아니다
여기서도 선은 있다.
❌ Zustand가 위험해지는 순간
- store가 비대해질 때
- UI 상태 + 비즈니스 상태가 섞일 때
- “여기서도 쓰네?”가 반복될 때
- 규칙 없이 setter가 난무할 때
이때는 Zustand도
Context처럼 전역 쓰레기장이 된다.
7️⃣ 그래서 실무에서 쓰는 기준은 이렇다
이 질문을 던져라.
“이 상태는
여러 페이지에서 필요하고
UI와 밀접하며
변경 규칙이 단순한가?”
- Yes → Zustand
- 변경 규칙이 복잡 → Redux 고려
- 전달만 필요 → Context
- 화면 한정 → 로컬 / 페이지 상태
8️⃣ 한 문장으로 끝내자
이 글의 결론은 이거다.
Zustand는
‘전역 상태’를 허용하면서도
React의 렌더링 지뢰를 피하도록 설계된 도구다
그래서:
- Context보다 안전하고
- Redux보다 가볍고
- UI 중심 앱에 잘 맞는다
다음 글에서는 마지막 퍼즐 조각으로 간다.
👉 다음 글
“Redux는 왜 아직도 쓰이는가”
- Redux가 필요한 진짜 상황
- 왜 과설계처럼 보여도 의미가 있는지
- “상태 흐름”이 제품 경쟁력이 되는 순간
여기까지 왔으면
이제 전역 상태 도구를
감으로 고르는 단계는 끝났다.
'framework_library > react' 카테고리의 다른 글
| React 소스 적용 (0) | 2026.01.10 |
|---|---|
| Redux는 왜 아직도 쓰이는가 (0) | 2026.01.10 |
| Context는 왜 상태 관리 도구가 아닌가 (0) | 2026.01.10 |
| Context / Zustand / Redux (0) | 2026.01.10 |
| 전역 상태는 왜 마지막 카드인가 (0) | 2026.01.10 |
댓글