Why useSyncExternalStore Is Not Used in Jotai
Daishi Kato's blog
상태 관리 라이브러리인 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/
다음 내용이 궁금하다면?
이미 회원이신가요?
2025년 1월 21일 오전 9:04
📰 대학생이 40년만에 해시테이블의 성능 향상을 이뤄냈다고
... 더 보기S
... 더 보기1️⃣ 아이디어의 가치는 실행했을 때 비로소 생긴다.
... 더 보기🗞️ 간밤에 구글이 Gemini 2.5 Pro를 출시했는데요. 벤치마크 상으로는 GPT-4.5와 Claude 3.7 의 성능을 크게 뛰어넘는 결과를 보여줍니다. 특히 코딩능력이 매우 크게 향상되었는데요.
... 더 보기