> ## Documentation Index
> Fetch the complete documentation index at: https://docs.towns.com/llms.txt
> Use this file to discover all available pages before exploring further.

# useUserSpaces

Hook to get the spaces of the current user.

## Imports

```ts theme={null}
import { useUserSpaces } from '@towns-protocol/react-sdk'
```

## Examples

You can combine this hook with the `useSpace` hook to get all spaces of the current user and render them:

```tsx theme={null}
import { useUserSpaces, useSpace } from '@towns-protocol/react-sdk'

const AllSpaces = () => {
    const { spaceIds } = useUserSpaces()
    return <>{spaceIds.map((spaceId) => <Space key={spaceId} spaceId={spaceId} />)}</>
}

const Space = ({ spaceId }: { spaceId: string }) => {
    const { data: space } = useSpace(spaceId)
    return <div>{space.metadata?.name || 'Unnamed Space'}</div>
}
```

## Definition

```ts theme={null}
function useUserSpaces(
  config?: ObservableConfig.FromObservable<Spaces>,
): {
    error: Error | undefined;
    status: "loading" | "loaded" | "error";
    isLoading: boolean;
    isError: boolean;
    isLoaded: boolean;
    spaceIds: string[];
}
```

**Source:** [useUserSpaces](https://github.com/towns-protocol/towns/blob/main/packages/react-sdk/src/useUserSpaces.ts)

## Parameters

### config

* **Type:** `ObservableConfig.FromObservable<Spaces>`
* **Optional**

Configuration options for the observable.

## Return Type

The list of all space ids of the current user.

```ts theme={null}
{
    error: Error | undefined;
    status: "loading" | "loaded" | "error";
    isLoading: boolean;
    isError: boolean;
    isLoaded: boolean;
    spaceIds: string[];
}
```
