Stunk
A lightweight, reactive state management library built on atomic principles.
Break state into independent chunks. Subscribe to exactly what matters. No boilerplate, no magic — just pure reactivity.
Why Stunk
Everything you need.
Nothing you don't.
Lightweight & Fast
Zero dependencies with minimal overhead. Built for performance from the ground up.
Fine-Grained Reactivity
Only affected components update. Subscribe to exactly what you need, nothing more.
Atomic Chunks
Break state into manageable pieces. Compose complex state from simple, isolated atoms.
TypeScript First
Full type inference out of the box. Catch errors at compile time, not in production.
Async Support
Built-in loading and error states for async operations. No extra setup needed.
Framework Agnostic
Works with React, Vue, Svelte, Angular, Solid, or plain JavaScript seamlessly.
Batch Updates
Group multiple state mutations into a single render cycle for optimal performance.
Time Travel
Undo and redo state changes. Built-in history management with zero overhead.
Middleware
Extend functionality with custom middleware. Logging, persistence — plug anything in.
Performance
Built to be fast
Benchmarked against Zustand, Jotai, Valtio, Redux Toolkit, and TanStack Store using tinybench on Node.js v22.
Stunk wins — 38% faster than Zustand. Both Stunk and TanStack use signal-based architectures. TanStack's marginal difference comes from a leaner pipeline with no middleware or shape validation layer.
Works With Your Stack
Framework Agnostic
Official integrations with first-class support
Ready to simplify
your state?
Join developers already using Stunk to write cleaner, faster, more reactive apps.