--- category: State related: createSharedComposable --- # createGlobalState Keep states in the global scope to be reusable across Vue instances. ## Usage ### Without Persistence (Store in Memory) ```ts // store.ts import { createGlobalState } from '@vueuse/core'; import { shallowRef } from 'vue'; export const useGlobalState = createGlobalState(() => { const count = shallowRef(0); return { count }; }); ``` A bigger example: ```ts // store.ts import { createGlobalState } from '@vueuse/core'; import { computed, shallowRef } from 'vue'; export const useGlobalState = createGlobalState(() => { // state const count = shallowRef(0); // getters const doubleCount = computed(() => count.value * 2); // actions function increment() { count.value++; } return { count, doubleCount, increment }; }); ``` ### With Persistence Store in `localStorage` with `useStorage`: ```ts twoslash include store // store.ts import { createGlobalState, useStorage } from '@vueuse/core'; export const useGlobalState = createGlobalState(() => useStorage('vueuse-local-storage', 'initialValue'), ); ``` ```ts // @filename: store.ts // @include: store // ---cut--- // component.ts import { useGlobalState } from './store'; export default defineComponent({ setup() { const state = useGlobalState(); return { state }; }, }); ``` ## Type Declarations ```ts export type CreateGlobalStateReturn = Fn; /** * Keep states in the global scope to be reusable across Vue instances. * * @see https://vueuse.org/createGlobalState * @param stateFactory A factory function to create the state * * @__NO_SIDE_EFFECTS__ */ export declare function createGlobalState( stateFactory: Fn, ): CreateGlobalStateReturn; ```