왜 Jotai는 useSyncExternalStore를 사용하지 않았을까

상태 관리 라이브러리인 Zustand, Jotai, Valtio의 저자가 쓴 글 중 흥미로운 글이 있어 소개드립니다. 이 글에서는 React 18에서 제공하는 useSyncExternalStore를 왜 Jotai가 사용하지 않았는지에 대해서 자세히 설명하고 있습니다.


결론적으로, Jotai는 React의 동시 렌더링(Concurrent Rendering) 기능과 최대한 매끄럽게 호환되도록 하기 위해 useSyncExternalStore 대신 useState를 모델로 한 자체적인 Atom 기반 상태 관리 방식을 채택했습니다.


반면, useSyncExternalStore를 사용하는 Zustand의 경우, 동시 렌더링(ex: useTransition)을 사용할 때 UI 이슈(예: isPending 대신 Suspense의 fallback UI가 표시됨)가 존재합니다.


이는 Zustand가 React 컴포넌트와는 별개로 독립된 스토어로 동작하도록 설계되었기 때문에, 완벽한 동시 렌더링 연동이 어렵기 때문입니다. 외부 스토어로 설계된 특성 상 어느 정도의 임시적인 UI 불일치(temporary tearing) 가능성은 감안하는 것입니다. (역시 은총알은 없네요)

결국, Zustand는 외부 스토어 접근 방식을 그대로 유지하는 대신 약간의 동시 렌더링 이슈를 감수하는 편이고, Jotai는 React 내부 상태(useState) 모델을 따르면서 useTransition 같은 동시 렌더링 기능을 더욱 안정적으로 지원하는 쪽을 택했다는 점이 핵심입니다. (서로가 trade-off인 관계)


자세한 내용은 원문 블로그를 확인해 보세요.


https://blog.axlight.com/posts/why-use-sync-external-store-is-not-used-in-jotai/

Why useSyncExternalStore Is Not Used in Jotai

Daishi Kato's blog

Why useSyncExternalStore Is Not Used in Jotai

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2025년 1월 21일 오전 9:04

 • 

저장 15조회 1,817

댓글 0

    함께 읽은 게시물

    스토리북 9 출시 소식

    ... 더 보기

    Storybook 9

    Storybook Blog

    Storybook 9

    소프트웨어 개발 방법론의 역사

    조회 996


    두 가지 목표가 있다. 어떤 목표가 학습 동기를 높인다고 생각하는가?

    ... 더 보기

    쉽고 재밌기만 한 교육은 독이다

    ㅍㅍㅅㅅ

    쉽고 재밌기만 한 교육은 독이다

    2025 쿠팡이츠 테크 신입 개발자 공개 채용

    ... 더 보기

    2025 쿠팡이츠 테크 신입 개발자 공개 채용

    Coupang Careers

    2025 쿠팡이츠 테크 신입 개발자 공개 채용


    PM이 이해하면 좋은 지표 개념

    프로덕트 매니저(PM)로 일하면서 늘 지표 이야기를 듣게 됩니다. 대부분 PM은 선행지표(leading indicator)와 후행지표(lagging indicator)의 개념을 잘 이해하고 있습니다. 하지만 선행지표에 영향을 미치는 '인풋(input) 지표, '아웃풋(o

    ... 더 보기

     • 

    댓글 1 • 저장 38 • 조회 1,521