A fully typed reactive state management library with very little boilerplate.
Arbor is not just another state management library, it focuses on developer experience and productivity by getting out of your way and letting you focus on your application logic.
Here are some of the core concepts driving Arbor's development:
- Small API: We try to keep Arbor's public API as minimal as possible to reduce the initial learning curve;
- Minimal Boilerplate: Developers should focus on their application logic not "plumbing logic" like state management;
- Built-in Reactivity: State is observable (thanks to ES6 Proxies) meaning different parts of your application can subscribe to specific parts of the application state and react to changes accordingly;
- Extensible: We provide a plugins system (experimental at the moment) that allows developers to extend Arbor with new functionality such as logging, persistency, developer tools (under development) or your own custom Plugin;
- No Dependencies: Arbor is small an has no external dependencies keeping your application footprint under control;
- Framework Agnostic: It can be used in vanilla JS apps, or with a framework of your choice through a binding;
- Official React Support: Even though it is framework agnostic, we provide an official React Binding that makes managing the state of React apps fun again;
- Powered by TypeScript: Benefit from a strong type system to help you catch compile-time bugs while leveraging other goodies like powerful intellisense and refactoring tools on your editor of choice.
This repository is organized as a monorepo, here you will find a few different packages, each focused on a specific problem.
Note
Our docs are constantly being polished and we are trying to make it easy to navigate and digest. Feel free to open a PR with improvements to the docs.
- Getting Started
- @arborjs/store: This is where most of the "magic" happens
- @arborjs/react: Use Arbor with React apps
- @arborjs/rxjs: Use Arbor with RxJS
- @arborjs/json: Provides type-preserving serialization and deserialization helpers
- @arborjs/plugins: Set of experimental plugins to extend Arbor's functionality
- Caveats
- Server Side Rendering
- Troubleshooting
- Tips & Tricks
- How Does Arbor Work?
- Learn by Example:
Important
Comming soon!
We are currently, working to improve our docs and will soon provide some guidelines on how to contribute to this project.
Arbor is MIT licensed.