--- 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 ```