# 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 `
Counter: {{ counter }}
```
: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]
Current color: {{ color }}
```