Bundle size (minified + gzip): Jotai khoảng 3KB, Zustand khoảng 1KB cho core và lên tới ~8KB khi kèm middleware.
Re-render: cả hai đều fine-grained — chỉ component nào subscribe đúng atom/slice vừa đổi mới render lại, khác hẳn Context API vốn render lại cả cây bên dưới.
Chỗ mỗi bên mạnh hơn:
- Mô hình atomic của Jotai hợp với state hình đồ thị, nhiều giá trị dẫn xuất — mỗi atom tự theo dõi dependency của nó.
- Zustand nhỉnh hơn khi cần batch update và ít derived state, vì overhead của single store thấp.
Vài điểm kỹ thuật khác: cả hai đều tree-shake tốt vì ESM-first. Về bộ nhớ, Jotai dùng WeakMap nên atom tự được GC khi hết reference, còn Zustand giữ reference tới store chừng nào còn subscriber.
Con số thực tế: trên js-framework-benchmark hai thư viện ngang nhau về tốc độ render thô — nút thắt cổ chai thường nằm ở React reconciliation chứ không phải state library.
Khuyến nghị: Zustand cho sự đơn giản và bundle bé; Jotai khi cần atomic state fine-grained với nhiều giá trị dẫn xuất.