Every developer knows state management is difficult. Continuously keeping track of what has been updated, why, and when, can become a nightmare, especially in large applications.

In the Angular world, the most popular solution is ngrx/store, which was inspired by the famous Redux model. Personally, I’m a big fan of Redux and worked a lot with ngrx; However, both as a developer and as a consultant, I’ve also come across the need for a different solution.

👶 Birth of Akita

Here in Datorama, we experimented with several tools, including mobx and ngrx, and decided that they weren’t a good fit. That’s why I’ve decided to create different state management, one that suits our needs better. This can also serve as a solution for developers who don’t feel connected to the Redux concepts or find them hard to grasp.

Akita has been used by Datorama for half a year now, and we’ve decided that now, it is mature enough to be published as open source. Almost all our code base has been migrated to Akita from both mobx and ngrx. The team is satisfied, having found Akita both simple and effective, and we’ve seen improvements both in delivery time and in performance.

It’s worth mentioning that Datorama is an enterprise company with complicated state management, a lot of complex, interconnecting entities, filters, etc.

🤔 What is Akita?

Akita is a state management pattern, built on top of RxJS, which takes the idea of multiple data stores from Flux and the immutable updates from Redux, along with the concept of streaming data, to create the Observable Data Stores model.

Akita encourages simplicity. It saves you the hassle of creating boilerplate code and offers powerful tools with a moderate learning curve, suitable for both experienced and inexperienced developers alike.

Akita is based on object-oriented design principles instead of functional programming, so developers with OOP experience should feel right at home. Its opinionated structure provides your team with a fixed pattern that cannot be deviated from.