MobX vs vuex: What are the differences?
MobX: Simple, scalable state management. MobX is a battle tested library that makes state management simple and scalable by transparently applying functional reactive programming (TFRP). React and MobX together are a powerful combination. React renders the application state by providing mechanisms to translate it into a tree of renderable components. MobX provides the mechanism to store and update the application state that React then uses; vuex: Centralized State Management for Vue.js. Vuex is a state management pattern + library for Vue.js applications. It serves as a centralized store for all the components in an application, with rules ensuring that the state can only be mutated in a predictable fashion. It also integrates with Vue's official devtools extension to provide advanced features such as zero-config time-travel debugging and state snapshot export / import.
MobX and vuex can be categorized as "State Management Library" tools.
MobX and vuex are both open source tools. It seems that vuex with 20.7K GitHub stars and 6.67K forks on GitHub has more adoption than MobX with 19.6K GitHub stars and 1.21K GitHub forks.
Flat, Cromon Media Services, and Toucan Toco are some of the popular companies that use vuex, whereas MobX is used by ScreenAware, Udemy, and Swat.io. vuex has a broader approval, being mentioned in 48 company stacks & 71 developers stacks; compared to MobX, which is listed in 51 company stacks and 32 developer stacks.
What is MobX?
What is vuex?
Need advice about which tool to choose?Ask the StackShare community!
Why do developers choose vuex?
Sign up to add, upvote and see more prosMake informed product decisions
What are the cons of using vuex?
Sign up to get full access to all the companiesMake informed product decisions
I'm building a new process management tool. I decided to build with Rails as my backend, using Sidekiq for background jobs. I chose to work with these tools because I've worked with them before and know that they're able to get the job done. They may not be the sexiest tools, but they work and are reliable, which is what I was optimizing for. For data stores, I opted for PostgreSQL and Redis. Because I'm planning on offering dashboards, I wanted a SQL database instead of something like MongoDB that might work early on, but be difficult to use as soon as I want to facilitate aggregate queries.
By switching our state management to MobX we removed approximately 40% of our boilerplate code and simplified our front-end development flow, which in the ends allowed us to focus more into product features rather than architectural choices.
Frontend choice was basically pre-ordained to be React. Seems like a strong choice on merits alone, plus I needed to learn it to stay current. I never liked Redux.js from the first time I tried to work with it, but a mate had recommended MobX and after watching a few videos I felt like I could fit the mental model of hit in my head. Using Material-UI which is a great timesaver and make sure I throw a few bucks their way every month via the open source collective.
Defaulted to Rails with PostgreSQL just because that's where my past strength as a dev had been. First prototype was in Go but was struggling a bit with the quality of libraries I needed so I went back to old faithful.
As soon as TypeScript was supported by default in Create React App I ported everything over. That combined with swagger code gen has given me really good type safety from the API boundary and above. I semi-regret the Go/Rails decision because I miss the type safety despite pain points with libraries.
I will probably look to flip back to Go gradually (probably via lambda) at a point where it makes sense for the business.