When deciding on the data structures for your observable state, your natural choice should be to reach out for
observable.box(), or to use the convenient
observable() API. Manipulating these data structures is as simple as mutating the properties directly or adding and removing elements as needed.
MobX gives you yet another way to surgically make changes to your data structures. It exposes a granular object API that can mutate these data structures at runtime. In fact, it gives you some capabilities that are not even possible with the original data structures. For example, adding new properties to observable objects and also keeping it reactive.