finds.dev

DanWahlin/Observable-Store

Observable Store provides a simple way to manage state in Angular, React, Vue.js and other front-end applications.

View on GitHub

★ 631TypeScriptMITupdated Feb 2026

// the take

Observable Store is a minimal RxJS-based state container (setState/getState/stateChanged) that works identically in Angular, React, Vue, or vanilla JS. It's aimed at teams who want pub/sub state sharing without adopting Redux/NgRx's actions-reducers-selectors machinery.

The API surface is genuinely tiny — setState, getState, stateChanged, done — and the same store class works unmodified across Angular, React, and vanilla JS, with real sample apps for each rather than just claims. Immutability is handled for you via deep cloning on get/set, removing a common footgun, with an explicit opt-out (deepCloneState: false) for hot paths that need a direct reference. Built-in stateHistory tracking plus a bundled Redux DevTools extension gives you time-travel debugging without pulling in Redux itself.

Deep-cloning the entire state slice on every getState/setState call is simple but gets expensive fast with large or deeply nested objects; the only remedy is manually turning cloning off and taking on mutation-safety yourself. The global store is built on static class properties (globalSettings, allStoreServices) rather than per-instance state, which is awkward for SSR or any scenario running multiple app instances in one process. There's no middleware or plugin model beyond the one bundled DevTools extension — no async action pattern, no memoized selectors, no persistence — so anything past plain get/set is on you. RxJS is a hard peer dependency, which is a real addition for React/Vue projects that don't already carry it, and the Angular version split (v3 for 17+, a separately maintained v2.2.15 for 14-16) means older-Angular users are frozen on an old release line.

We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →

// at a glance

Stars
631
Forks
119
Language
TypeScript
License
MIT
Last commit
6 Feb 2026

// nearby

If Observable-Store isn't quite it.

All repos →