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

# Presence

> The Presence component displays the avatars of users in a room.

> [!NOTE]
>
> We recommend that you familiarize yourself with [UI Customization Concepts](https://velt.dev/docs/ui-customization/overview.md) before attempting to modify any components.

## VeltPresenceWireframe

![presence-overview.png](https://mintcdn.com/velt/Y46CMUqidobLXMZ7/images/customization/presence/presence-overview.png?fit=max\&auto=format\&n=Y46CMUqidobLXMZ7\&q=85\&s=b085fe4efeb13a4ce13bed7f3e05d207)

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltWireframe>
>     <VeltPresenceWireframe>
>         <VeltPresenceWireframe.AvatarList />
>         <VeltPresenceWireframe.AvatarRemainingCount />
>     </VeltPresenceWireframe>
> </VeltWireframe>
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <velt-wireframe style="display:none;">
>     <velt-presence-wireframe>
>         <velt-presence-avatar-list-wireframe></velt-presence-avatar-list-wireframe>
>         <velt-presence-avatar-remaining-count-wireframe></velt-presence-avatar-remaining-count-wireframe>
>     </velt-presence-wireframe>
> </velt-wireframe>
> ```

### AvatarList

![presence-avatar-list.png](https://mintcdn.com/velt/Y46CMUqidobLXMZ7/images/customization/presence/presence-avatar-list.png?fit=max\&auto=format\&n=Y46CMUqidobLXMZ7\&q=85\&s=44a764a8a30849e7e45fbf0da1aadac0)

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltWireframe>
>     <VeltPresenceWireframe.AvatarList>
>         <VeltPresenceWireframe.AvatarList.Item />
>     </VeltPresenceWireframe.AvatarList>
> </VeltWireframe>
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <velt-wireframe style="display:none;">
>     <velt-presence-avatar-list-wireframe>
>         <velt-presence-avatar-list-item-wireframe></velt-presence-avatar-list-item-wireframe>
>     </velt-presence-avatar-list-wireframe>
> </velt-wireframe>
> ```

#### Item

![presence-avatar-list-item.png](https://mintcdn.com/velt/Y46CMUqidobLXMZ7/images/customization/presence/presence-avatar-list-item.png?fit=max\&auto=format\&n=Y46CMUqidobLXMZ7\&q=85\&s=497e8cbecceed1ad41ee34b52b6c9ed4)

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltWireframe>
>     <VeltPresenceWireframe.AvatarList.Item />
> </VeltWireframe>
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <velt-wireframe style="display:none;">
>     <velt-presence-avatar-list-item-wireframe></velt-presence-avatar-list-item-wireframe>
> </velt-wireframe>
> ```

### AvatarRemainingCount

![presence-avatar-remaining-count.png](https://mintcdn.com/velt/Y46CMUqidobLXMZ7/images/customization/presence/presence-avatar-remaining-count.png?fit=max\&auto=format\&n=Y46CMUqidobLXMZ7\&q=85\&s=2022d9204465e09704d037f3fddd78bd)

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltWireframe>
>     <VeltPresenceWireframe.AvatarRemainingCount />
> </VeltWireframe>
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <velt-wireframe style="display:none;">
>     <velt-presence-avatar-remaining-count-wireframe></velt-presence-avatar-remaining-count-wireframe>
> </velt-wireframe>
> ```

## VeltPresenceTooltipWireframe

![presence-tooltip.png](https://mintcdn.com/velt/Y46CMUqidobLXMZ7/images/customization/presence/presence-tooltip.png?fit=max\&auto=format\&n=Y46CMUqidobLXMZ7\&q=85\&s=686027c75ca7b1cc86eba65271070008)

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltWireframe>
>     <VeltPresenceTooltipWireframe>
>         <VeltPresenceTooltipWireframe.Avatar />
>         <VeltPresenceTooltipWireframe.StatusContainer />
>     </VeltPresenceTooltipWireframe>
> </VeltWireframe>
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <velt-wireframe style="display:none;">
>     <velt-presence-tooltip-wireframe>
>         <velt-presence-tooltip-avatar-wireframe></velt-presence-tooltip-avatar-wireframe>
>         <velt-presence-tooltip-status-container-wireframe></velt-presence-tooltip-status-container-wireframe>
>     </velt-presence-tooltip-wireframe>
> </velt-wireframe>
> ```

### Avatar

![presence-tooltip-avatar.png](https://mintcdn.com/velt/Y46CMUqidobLXMZ7/images/customization/presence/presence-tooltip-avatar.png?fit=max\&auto=format\&n=Y46CMUqidobLXMZ7\&q=85\&s=54b27954ba3a840db2c791cf4c10759d)

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltWireframe>
>     <VeltPresenceTooltipWireframe.Avatar />
> </VeltWireframe>
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <velt-wireframe style="display:none;">
>     <velt-presence-tooltip-avatar-wireframe></velt-presence-tooltip-avatar-wireframe>
> </velt-wireframe>
> ```

### StatusContainer

![presence-tooltip-avatar-status.png](https://mintcdn.com/velt/Y46CMUqidobLXMZ7/images/customization/presence/presence-tooltip-avatar-status.png?fit=max\&auto=format\&n=Y46CMUqidobLXMZ7\&q=85\&s=81236c87fdee0b90fbd63eff62f2d0c6)

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltWireframe>
>     <VeltPresenceTooltipWireframe.StatusContainer>
>         <VeltPresenceTooltipWireframe.UserName />
>         <VeltPresenceTooltipWireframe.UserActive />
>         <VeltPresenceTooltipWireframe.UserInactive />
>     </VeltPresenceTooltipWireframe.StatusContainer>
> </VeltWireframe>
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <velt-wireframe style="display:none;">
>     <velt-presence-tooltip-status-container-wireframe>
>         <velt-presence-tooltip-user-name-wireframe></velt-presence-tooltip-user-name-wireframe>
>         <velt-presence-tooltip-user-active-wireframe></velt-presence-tooltip-user-active-wireframe>
>         <velt-presence-tooltip-user-inactive-wireframe></velt-presence-tooltip-user-inactive-wireframe>
>     </velt-presence-tooltip-status-container-wireframe>
> </velt-wireframe>
> ```

#### UserName

![presence-tooltip-username.png](https://mintcdn.com/velt/Y46CMUqidobLXMZ7/images/customization/presence/presence-tooltip-username.png?fit=max\&auto=format\&n=Y46CMUqidobLXMZ7\&q=85\&s=cbcc6fc9dbc3387aa73402b55b6aafc7)

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltWireframe>
>     <VeltPresenceTooltipWireframe.UserName />
> </VeltWireframe>
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <velt-wireframe style="display:none;">
>     <velt-presence-tooltip-user-name-wireframe></velt-presence-tooltip-user-name-wireframe>
> </velt-wireframe>
> ```

#### UserActive

![presence-tooltip-user-active.png](https://mintcdn.com/velt/Y46CMUqidobLXMZ7/images/customization/presence/presence-tooltip-user-active.png?fit=max\&auto=format\&n=Y46CMUqidobLXMZ7\&q=85\&s=673e0d7a568d7f3e7776d162f8742daf)

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltWireframe>
>     <VeltPresenceTooltipWireframe.UserActive />
> </VeltWireframe>
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <velt-wireframe style="display:none;">
>     <velt-presence-tooltip-user-active-wireframe></velt-presence-tooltip-user-active-wireframe>
> </velt-wireframe>
> ```

#### UserInactive

![presence-tooltip-user-inactive.png](https://mintcdn.com/velt/Y46CMUqidobLXMZ7/images/customization/presence/presence-tooltip-user-inactive.png?fit=max\&auto=format\&n=Y46CMUqidobLXMZ7\&q=85\&s=5cb4a90d2bf06ef15df00a7a66f7e8f1)

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltWireframe>
>     <VeltPresenceTooltipWireframe.UserInactive />
> </VeltWireframe>
> ```

> [tab] Other Frameworks
>
> ```html theme={null}
> <velt-wireframe style="display:none;">
>     <velt-presence-tooltip-user-inactive-wireframe></velt-presence-tooltip-user-inactive-wireframe>
> </velt-wireframe>
> ```

## Styling

### Disable ShadowDOM

* By default, ShadowDOM is used to ensure that your app's CSS does not interfere with the styling of the SDK components.
* Disable the shadow dom to apply your custom CSS to the component.

Default: `true`

> [tab] React / Next.js
>
> ```jsx theme={null}
> <VeltPresence shadowDom={false} />
> ```

> [tab] Other Frameworks
>
> ```jsx theme={null}
> <velt-presence shadow-dom="false"></velt-presence>
> ```

## Limitations

* **Anonymous local users never see presence.** The feature requires an identified user.
* **`maxUsers` does double duty**: it caps the avatars shown *and* gates the "+N" overflow badge, which renders only when `filteredPresenceUsers.length > maxUsers`.
* **A custom `template` needs `shadowDom="true"` explicitly** if you want it inside the shadow DOM.
* **Tooltip slots are status-gated**: `.UserActive` renders only for `online` and `.UserInactive` only for `away`. Neither renders for `offline`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.