Thunder State

An NPM Package

When I was introduced to state management for the first time, I was using Angular's NgRx. This was heavily borrowed from Redux, and although I understood what each layer of separation was attempting to accomplish, I didn't agree that it made anything more maintainable. In fact, I (and other devs on my team) felt that it made maintaining state painful. Not only did you have to make the same singular change in several different files, but if something went wrong at any point in that pipeline, good luck tracking it down.

When I switched to Vue and saw the power and simplicity of Vuex for the first time, I wondered why all state management wasn't handled this way. It did bother me that Vuex was not agnostic, so I couldn't take it with me to React, Angular, or any other solution. I didn't agree with every decision, but I was definitely on the same philosophical page.

There was one major advantage Redux and NgRx have, though, and that is Redux DevTools. That's why I not only created this agnostic Vuex-like state management library, but I also wrote a browser extension to handle time-travel debugging.

Tools Used:

  • Rollup
  • Node.js
  • Babel
  • Jest
  • GIT / GitHub