[Reference] 2024 상태 관리 라이브러리 비교


1. 상태 관리 라이브러리

(1) : 소개

  • 2024-01-15 기준 (1년 트렌드)

image

접근 방식FluxProxyAtomic
설명저장소(store) / 액션함수(action)컴포넌트에 사용되는 일부 상태를 자동으로 감지해서 업데이트React에 사용되는 state와 비슷하게 리액트 트리 안에서 상태를 저장하고 관리하는 방식
종류Redux, ZustandMobx, ValtioRecoil, Jotai

(1) Redux toolkit (RTK)

장점

  • 유지보수 측면에 좋다 (상태 기반 업데이트)
  • Redux Devtools를 이용한 직관적인 전역 상태 확인 (디버깅에 용이)

단점

  • 보일러 플레이트.
  • 무거움 (비동기 요청과 같은 서드파티 라이브러리 필요)

(2) Zustand

장점

  • Redux Devtools 사용 가능
  • 보일러플레이트가 적다
  • Hook 기반

단점

  • 자료가 적다

(3) Recoil

장점

  • 사용이 간편
  • Selector로 비동기 처리 가능

단점

  • 업데이트 이슈
  • 유지보수가 어려울수 있다 ( 상태 변경이 잦으면 상태 변경 예측이 어려움)

(4) Jotai

장점

  • 사용이 쉽다
  • 비동기 액션 처리 기능 내재

단점

  • 자료가 많이 없다

(5) MobX

장점

  • 간결한 코드
  • 사용이 쉽다

단점

  • 디버깅툴에서 가독성이 떨어짐
  • 클래스형
특징Redux-toolkitRecoilMobXZustandJotai
데이터흐름단방향 데이터 흐름 패턴을 사용단방향 데이터 흐름 패턴을 사용양방향 데이터 바인딩 패턴을 사용단방향 데이터 흐름 패턴을 사용단방향 데이터 흐름 패턴을 사용
데이터변화감지액션(Action)을 통해 변화를 감지변화를 감지하는 상태Atom을 사용오브젝트를Observer로 사용함React Hooks를 통해 상태 변화를 감지함React Hooks를 통해 상태 변화를 감지함
번들사이즈대략 11.8mb2.21 MB4.19 MB324 kB404 kB
비동기처리Redux-Thunk, Redux-Saga와 같은 미들웨어를 사용함비동기 처리를 위한 별도의 라이브러리가 필요하지 않음MobX-React와 같은 미들웨어를 사용함비동기 처리를 위한 별도의 라이브러리가 필요하지 않음비동기 처리를 위한 별도의 라이브러리가 필요하지 않음
러닝커브Redux는 개념이 간결하고 직관적이지만 초기 학습이 어려움Recoil은 개념이 간결하고 초기 학습이 상대적으로 용이함MobX는 초기 학습이 비교적 용이함Zustand은 상태 관리와 관련된 개념이 간결하며 초기 학습이 상대적으로 용이함Jotai는 초기 학습이 비교적 용이함
커뮤니티널리 사용되고 활발한 커뮤니티가 있음아직은 상대적으로 새로운 상태 관리 도구이기 때문에 커뮤니티는 활발하지 않음커뮤니티가 활발하지만 Redux보다는 작음커뮤니티는 활발하지만 Redux보다는 작음커뮤니티는 활발하지만 Redux보다는 작음

Top-Down 방식

비교redux-toolkit(rtk)zustand
Provider 여부OX
보일러 플레이트간단상대적으로 복잡
다운로드 수646k1798k
github Star20.6k8.3k

Bottom-Up 방식

비교jotairecoil
Key 사용 여부XO
TSOX
다운로드 수130k303k
github Star9.6k17.4k