Sync + Async
State Management.
One Mental Model.

Built on the patterns you know. Refined into something simpler.
Fine-grained reactivity, minimal boilerplate, zero dependencies.
npm i yuustate
Get Started
✓ 103 modules transformed.
/.vite/manifest.json 3.20 kB │ gzip: 0.60 kB
/assets/root-CRn6MgiL.css 15.45 kB │ gzip: 3.77 kB
/assets/components-DrxDq1-G.js 1.01 kB │ gzip: 0.59 kB
/assets/store-yuustate-ANnGAsrD.js 1.12 kB │ gzip: 0.51 kB 🎉
/assets/store-zustand-BJYVMYXp.js 1.68 kB │ gzip: 0.79 kB
/assets/utils-DuanyUhp.js 1.94 kB │ gzip: 0.60 kB
/assets/root-CDn2kOZF.js 2.46 kB │ gzip: 1.01 kB
/assets/home-DQiCh3EF.js 2.74 kB │ gzip: 1.18 kB
/assets/async-yuustate-DoDkgSCs.js 7.13 kB │ gzip: 1.99 kB 🎉
/assets/react-yNhF9ZRY.js 11.80 kB │ gzip: 4.02 kB
/assets/async-tanstack-Cq-pcNs-.js 43.94 kB │ gzip: 12.62 kB
/assets/chunk-UVKPFVEO-BCVTWmlK.js 126.29 kB │ gzip: 42.59 kB
/assets/entry.client-CMKBzKJ-.js 190.57 kB │ gzip: 60.05 kB
✓ built in 715ms

In Short

Like Zustand, but has additional capabilities:

  • No selectors: automatically optimizes re-renders
  • Store events: onFirstSubscribe, onSubscribe, onUnsubscribe, onLastUnsubscribe
  • Easier to set the initial state on SSR/SSG
  • Smaller bundle

Async support like TanStack Query, but:

  • DX is very similar to Zustand: Store is available globally, access/modify state from anywhere
  • Better docs: concept & state transition are clearly explained
    (honestly, many developers have used TanStack Query for years but still don't fully understand the difference between refetch and invalidate)
  • Much smaller bundle than TanStack Query