A simple, lightweight state management library for React applications. Works over the pub-sub model and batches state updates.
react-orba isn’t designed as a drop-in replacement for popular libraries like
Redux or Zustand. Instead, it’s best
suited for scenarios with frequent state changes where a lightweight, minimal state management
solution is preferred.
| Feature | react-orba | redux | zustand |
|---|---|---|---|
| Bundle Size | ✅ Tiny & minimal (~2.5kb) | Boilerplate + toolkit (~40kb) | Small (~3.5kb) |
| Boilerplate | ✅ Low | Significant | Minimal |
| Built-in batching | ✅ Yes | No | No |
| Middlewares and plugins | ✅ Yes | ✅ Yes | |
| Devtools support | ✅ Yes | Limited | |
| Debugging support | No | ✅ Excellent | Limited |
- At the root of your app or a module, create a store.
import { createStore } from 'react-orba';
const initialParams: AppState = {
theme: 'light',
...
};
const appStore = createStore<AppState>(initialParams);- In your component, slice out your state variable(s) using the
useValuehook.
const [theme, setTheme] = useValue<AppState, string>(appStore, (state) => state.theme);- Update state as needed - similar how you would use the
useStatehook!
<button onClick={() => setTheme('light')}>Toggle theme</button>- Support for developer tools
- Logging and debug modes
-
Support for silent state updates and immediate update firing - Support for async state updates
- Support for persistence layer - integration with IndexedDB or browser storages
- Custom equality function for state slices
- Memoized
useValuehook
- Example usages for complex patters
- Migrating from Zustand
- Fix persistent linting issues