# State Management

> 

Horn does not force a global store library.

## `useState()`

Use `useState()` for framework-managed shared state that should survive hydration.

```ts
const counter = useState('counter', () => 0)
```

On the server, Horn creates a request-scoped state store. On the client, that state is hydrated from the SSR payload.

## External stores

You can still use Pinia or any other Vue store solution. Horn does not reserve that layer. Use `app/app.vue` to install providers if you need them globally.
