Redux
A Predictable State Container for JavaScript apps
...It basically lets you write applications that behave in a consistent manner, can run in various environments (native, client and server) and are easy to test. Redux centralizes your app’s state and logic, thereby enabling some powerful capabilities. With Redux it’s possible to implement logging, hot reloading, universal apps, time travel and more with no buy-in from the developer.
Unlike Flux (from which Redux was inspired), Redux only has a single store for the object tree where the whole state of your app is stored. This store has a single root reducing function. As your app grows, instead of adding stores you split the root reducer into smaller ones that work independently on different parts of the state tree. ...