Introduction

I’m Ido Glikman, front-end tech leader at Datorama. A few weeks ago I gave a lecture here in Israel in which I presented Akita and talked about why did we decide to develop a state manager of our own.

The lecture was in Hebrew, and I thought, why not write it up in English so that more people can be exposed to it and get insights from the things that we had experienced, so let’s begin.

The Product Evolution

When we just started developing our client-side, we wrote it in vanilla Javascript, without the use of components or a state manager. We quickly realized that we needed to upgrade the system and start using more advanced concepts and techniques.

We decided to go with Angular combined with ngrx which was the most recommended solution at the time, and likely the only one.

We started our journey with ngrx and very quickly discovered we were in for an adventure.

THE JOURNEY TO NGRX WAS A BUMPY RIDE

What we Experienced in ngrx

Steep learning curve

I can testify for myself that as a developer first exposed to the world of redux, I had difficulties learning and connecting all the dots in order to create the smallest of features.

Boilerplate

A point I think that anyone who works or worked with ngrx experiences every day. To build even the smallest feature, you have to create so many things like reducers, effects, actions, actions creators, etc.

LEARNING CURVE + BOILERPLATE

Functional Programming Mindset

ngrx similarly to redux tends to use functional programming, which I felt made it harder for programmers from other worlds like Java to join in the development and “feel at home”.

And this is how we felt at that period.

All the above things led us to the conclusion that we need to develop a state manager that will be a comprehensive answer to all of our needs with a future thought on community needs. This is how Akita was born.

Akita in Datorama

We will start by saying that behind Akita there is a company — Datorama. Datorama invests and pays us, the developers, to improve Akita and make it better for us and also for the community, and this is the way for us to give back to the community for all that it gives us.

Another thing is before we released it to the community, Akita was in internal use here for over six months, meaning that it passed all of the processes of tests, bugs, feature requests, etc.

The last thing is, our product is a big data product . We have vast amounts of data in the client, and Akita handles it amazingly.

What is Akita

Akita is a state management pattern built on top of RxJS. 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.

Akita’s Architecture