VueX
This plugin allows you to capture VueX
mutations/state and inspect them later on while replaying session recordings. This is very useful for understanding and fixing issues.
Installation
Section titled Installationnpm i @openreplay/tracker-vuex
Usage
Section titled UsageInitialize the @openreplay/tracker
package as usual and load the plugin into it. Then put the generated plugin into your plugins
field of your store.
If your website is a Single Page Application (SPA)
Section titled If your website is a Single Page Application (SPA)import Vuex from 'vuex'
import OpenReplay from '@openreplay/tracker';
import trackerVuex from '@openreplay/tracker-vuex';
//...
const tracker = new OpenReplay({
projectKey: PROJECT_KEY,
// ... options
});
If your web app is Server-Side-Rendered (SSR)
Section titled If your web app is Server-Side-Rendered (SSR)Follow the below example if your app is SSR. Ensure tracker.start()
is called once the app is started (in useEffect
or componentDidMount
).
Refer to the Troubleshooting section if you will get errors with SSR.
import Vuex from 'vuex'
import OpenReplay from '@openreplay/tracker/cjs';
import trackerVuex from '@openreplay/tracker-vuex/cjs';
//...
const tracker = new OpenReplay({
projectKey: PROJECT_KEY,
// ... options
});
With tracker-vuex version higher than 4.0.0
Section titled With tracker-vuex version higher than 4.0.0// check list of available options below
const vuexPlugin = tracker.use(trackerVuex(<options>));
// add a name to your store, optional (will be randomly generated otherwise)
const storeTracker = vuexPlugin('STORE NAME')
const store = createStore({
state,
mutations,
plugins: [storeTracker]
})
With tracker-vuex version lower than 3.0.0
Section titled With tracker-vuex version lower than 3.0.0// check list of available options below
const vuexPlugin = tracker.use(trackerVuex(<options>));
tracker.start();
const store = new Vuex.Store({
//...
plugins: [vuexPlugin],
});
Options
Section titled OptionsYou can customize the plugin behavior with options to sanitize your data. They are similar to the ones from the standard createLogger
plugin.
trackerVuex({
filter (mutation, state) {
// returns `true` if a mutation should be logged
// `mutation` is a `{ type, payload }`
return mutation.type !== "aBlacklistedMutation";
},
transformer (state) {
// transforms the state before logging it.
// for example return only a specific sub-tree
return state.subTree;
},
mutationTransformer (mutation) {
// mutations are logged in the format of `{ type, payload }`
// we can format it any way we want.
return mutation.type;
},
})
Tutorial
Section titled TutorialIf you’re looking for a practical example of how to use this plugin to capture state changes in your session replays, check out our detailed tutorial over here.
Have questions?
Section titled Have questions?Having trouble setting up this plugin? Please connect to our Slack or check out our Forum and get help from our community.