본문 바로가기
framework_library/react

Context / Zustand / Redux

by 죄니안죄니 2026. 1. 10.
Context / Zustand / ReduxContext / Zustand / ReduxContext / Zustand / Redux
 
 

이 질문은 이름 때문에 생기는 오해다.
정리하면 결론은 이거다.

Context / Zustand / Redux는
“같은 종류의 것”이 아니다.
일부는 React의 기능이고, 일부는 외부 라이브러리다.
동시에, 실무에서는 ‘상태 공유 방식’을 가리키는 대명사처럼도 쓰인다.

차근차근 나눠 보자.


1️⃣ Context는 “라이브러리”가 아니다

Context의 정체

Context는 React 자체 기능(API) 이다.

import { createContext, useContext } from "react";
  • React 설치하면 이미 들어 있다
  • 추가 설치 ❌
  • 상태 관리 라이브러리 ❌

Context가 하는 일은 딱 하나다

props를 중간 단계 없이 전달하는 통로

 
<ThemeContext.Provider value="dark">
  <App />
</ThemeContext.Provider>

Context는:

  • 상태를 저장하지 않고
  • 상태를 관리하지 않고
  • 상태를 공유 전달만 한다

👉 그래서 정확한 표현은 이거다.

Context = 상태 관리 ❌
Context = 의존성 전달 메커니즘 ⭕


2️⃣ Zustand / Redux는 “외부 라이브러리”다

이 둘은 공통점이 있다.

  • React 외부에 상태 저장소(store) 를 만든다
  • 컴포넌트 생명주기와 분리된다
  • React 없이도 개념적으로 존재 가능하다

Zustand

 
import { create } from "zustand";
  • 외부 라이브러리 ⭕
  • store 중심
  • 규칙이 적고 자유도가 높다

👉 “가벼운 전역 상태 라이브러리”


Redux

 
import { createStore } from "redux";
  • 외부 라이브러리 ⭕
  • 상태 변경 규칙이 엄격
  • 액션 → 리듀서 → 새 상태

👉 “상태 흐름을 강제하는 아키텍처 도구”

Redux는 단순 편의 도구가 아니다.
상태 변경 자체를 설계 대상으로 만든다.


3️⃣ 그런데 왜 셋을 같이 묶어서 말할까?

실무에서 이렇게 말하는 걸 많이 듣는다.

“전역 상태는 Context로 할까?
아니면 Zustand? Redux?”

이건 정확한 기술 분류가 아니라
역할 중심의 묶음 표현이다.

이 문장의 진짜 의미

“이 상태를
컴포넌트 밖으로 빼서
여러 곳에서 공유해야 할까?”

즉,

Context / Zustand / Redux
= “컴포넌트 트리 바깥에서 상태를 공유하는 방법들”

이라는 대명사적 표현으로 쓰이는 거다.


4️⃣ 개념적으로 다시 정리하면 이렇게 나뉜다

🟦 Context

  • React 기본 기능
  • 상태 저장 ❌
  • 전달 통로 ⭕
  • 정적이거나 드물게 변하는 값에 적합

🟩 Zustand

  • 외부 라이브러리
  • 상태 저장 ⭕
  • 규칙 최소
  • UI 친화적 전역 상태

🟥 Redux

  • 외부 라이브러리
  • 상태 저장 ⭕
  • 규칙 강제
  • 상태 변화 자체가 도메인인 경우

5️⃣ 그래서 이 질문에 대한 정확한 답

Context / Zustand / Redux는
“같은 종류의 기술”은 아니다.
다만 실무에서는
‘전역 상태를 다루는 선택지들’을 묶어서 부르는 이름처럼 쓰인다.

  • Context → 전달 방식
  • Zustand → 가벼운 전역 저장소
  • Redux → 상태 흐름 아키텍처

6️⃣ 이 관점이 중요한 이유

이걸 구분 못 하면 이런 일이 생긴다.

  • Context로 상태 관리하려다 렌더링 지옥
  • Redux로 UI 상태 관리하다 과설계
  • Zustand를 도입했는데 규칙이 없어 난장판

👉 도구 문제가 아니라, 역할 오해 문제다.


이 문장 하나로 고정

앞으로 이 문장 기준으로 판단하면 된다.

Context는 “어떻게 전달할지”의 문제고
Zustand / Redux는 “어디에 저장할지”의 문제다

이게 정리됐으면,
다음 글에서 다룰 주제가 정확히 맞물린다.

👉 다음 글

“Context는 왜 상태 관리 도구가 아닌가”

여기서 Context 남용이 왜 위험한지,
왜 착각이 생기는지,
구조적으로 아주 깔끔하게 풀린다.

댓글