You’re browsing the documentation for v2.x and earlier. For v3.x, click here.

Migration from Vuex 0.6.x to 1.0

Vuex 2.0 is released, but this guide only covers the migration to 1.0? Is that a typo? Also, it looks like Vuex 1.0 and 2.0 were released simultaneously. What’s going on? Which one should I use and what’s compatible with Vue 2.0?

Both Vuex 1.0 and 2.0:

  • fully support both Vue 1.0 and 2.0
  • will be maintained for the foreseeable future

They have slightly different target users however.

Vuex 2.0 is a radical redesign and simplification of the API, for those who are starting new projects or want to be on the cutting edge of client-side state management. It is not covered by this migration guide, so you should check out the Vuex 2.0 docs if you’d like to learn more about it.

Vuex 1.0 is mostly backwards-compatible, so requires very few changes to upgrade. It is recommended for those with large existing codebases or who want the smoothest possible upgrade path to Vue 2.0. This guide is dedicated to facilitating that process, but only includes migration notes. For the complete usage guide, see the Vuex 1.0 docs.

store.watch with String Property Path replaced

store.watch now only accept functions. So for example, you would have to replace:

store.watch('user.notifications', callback)

with:

store.watch(
  // When the returned result changes...
  function (state) {
    return state.user.notifications
  },
  // Run this callback
  callback
)

This gives you more complete control over the reactive properties you’d like to watch.

Upgrade Path

Run the migration helper on your codebase to find examples of store.watch with a string as the first argument.

Store’s Event Emitter removed

The store instance no longer exposes the event emitter interface (on, off, emit). If you were previously using the store as a global event bus, see this section for migration instructions.

Instead of using this interface to watch events emitted by the store itself (e.g. store.on('mutation', callback)), a new method store.subscribe is introduced. Typical usage inside a plugin would be:

var myPlugin = store => {
  store.subscribe(function (mutation, state) {
    // Do something...
  })
}

See example the plugins docs for more info.

Upgrade Path

Run the migration helper on your codebase to find examples of store.on, store.off, and store.emit.

Middlewares replaced

Middlewares are replaced by plugins. A plugin is a function that receives the store as the only argument, and can listen to the mutation event on the store:

const myPlugins = store => {
  store.subscribe('mutation', (mutation, state) => {
    // Do something...
  })
}

For more details, see the plugins docs.

Upgrade Path

Run the migration helper on your codebase to find examples of the middlewares option on a store.

© 2013–present Yuxi Evan You
Licensed under the MIT License.
https://vuejs.org/v2/guide/migration-vuex.html