Arez is a simple, efficient and scalable state management library for client-side applications. Arez is powered by the reactive programming model found in spreadsheets, a dataflow programming model. Arez tracks usage of observable data and notifies observers when the observable data changes. The library scales from simple, flat domain models to complex, highly inter-connected graph-like domain models. Arez trades a higher memory usage for a faster execution speed and better developer experience. Arez is optimized for developer happiness by eliminating the need to monitor state changes. Instead, applications react to state changes on demand.
Arez is under heavy development, and sometimes the documentation does not keep up to date. However the goal of the toolkit is to be easy to use, and this includes clear and concise documentation. If something is unclear please report it as a bug because it is a bug. If a new user has a hard time, then we need to fix the problem.
For more information about Arez, please see the Website. For the source code and project support, please visit the GitHub project.
Arez was released as open source so others could benefit from the project. We are thankful for any contributions from the community. A Code of Conduct has been put in place and a Contributing document is under development.
Arez is licensed under Apache License, Version 2.0.
-
Stock Software for providing significant support in building and maintaining Arez. The company was willing take a risk and base their next suite of applications on an idea and the bet paid off.
-
The toolkit began life as an attempt to port Mobx to java. Not all of the Mobx primitives made sense in a java world. There were also places where it was felt that we could improve on the Mobx model, at least for our environment. The idea of a "port" was soon discarded and Arez became a reimplementation of similar concepts. However there are some places (i.e.
Transaction.completeTracking()
) where the Mobx heritage is clear. Credit goes to Michel Weststrate and the Mobx team for their clean conceptual model and some inspirational talks. Later in the life of Arez, parts of the Mobx documentation acted as inspiration or were directly copied and modified (i.e. MobX's (@)computed) docs were used to seeddocs/computable_values.md
). -
Other frameworks that influenced or are influencing the development of Arez include;
- Incremental is an Ocaml library that should have inspired Arez.
- Meteor Tracker
- VueJS watchers and Computed properties
- KnockoutJS Observables and Computed Observables
- GlimmerJS Tracked Properties
- Observable is a javascript-like language that uses a similar model and bakes it into the language. It uses
cell
s as the primitive which can either be mutable values or react to changes in other cells (i.e. Arez'sComputableValue
instances).