Actions are the way to mutate the core state of your application. In fact, MobX strongly recommends that you always use actions and never do any mutations outside of an action. It even goes to the extent of enforcing this requirement across your app if you configure MobX with: { enforceActions: true }:
import { configure } from 'mobx';
configure({ enforceActions: true });
Let the preceding lines of code be the starting point of your MobX-driven React app. It's obvious that there are some benefits to using actions for all state-mutation. But so far, it hasn't been very clear. Let's drill a little deeper to uncover these hidden benefits.
configure({ enforceActions: true }) isn't the only option available for guarding state-mutation. There is a stricter form with { enforceActions: 'strict' }. The difference is subtle but worth calling...