# State Nuxt provides `useState` to create a globally shared state within the context. `useState` is SSR-friendly `ref` replacement in that its value will be hydrated (preserved) after server-side rendering and is shared across all components using a unique key. ::alert{icon=⚠️} Never define `const state = ref()` outside of ` ``` :button-link[Open on StackBlitz]{href="https://stackblitz.com/github/nuxt/framework/tree/main/examples/use-state?terminal=dev" blank} ### Advanced Example In this example, we use a composable that detects the user's default locale and keeps it in a `locale` state. :button-link[Open on StackBlitz]{href="https://stackblitz.com/github/nuxt/framework/tree/main/examples/locale?terminal=dev" blank} ## Shared State By using [auto-imported composables](/docs/directory-structure/composables) we can define global type-safe states and import them across the app. ```ts [composables/states.ts] export const useCounter = () => useState('counter', () => 0) export const useColor = () => useState('color', () => 'pink') ``` ```vue [app.vue] ```