Modules work like separate Vuex stores but in the same Vuex single source of truth. This helps in the development of larger-scale applications because you can maintain and work with a more complex structure without the need to check for problems in the same file.
In the meantime, it's possible to work with modules and the plain Vuex store, migrating from legacy applications so you don't have to re-write everything from the ground up to be able to use the module structure.
In our case, we added a new module named authentication with just a state present in the store, and continued with the old user Vuex store, so that in the future we can refactor the user store into a new module and separate it off into a more specific, domain-driven architecture.