ElevenLabs voice UI components for React
ElevenLabs can power conversational voice experiences. orb-ui gives those experiences a visible React UI layer: an animated orb, audio-reactive feedback, and predictable voice states.
Install
Install both orb-ui and the ElevenLabs client package used by the adapter:
npm install orb-ui @elevenlabs/client
Use the adapter
import { Conversation } from '@elevenlabs/client'
import { Orb } from 'orb-ui'
import { createElevenLabsAdapter } from 'orb-ui/adapters'
const adapter = createElevenLabsAdapter(Conversation, {
agentId: 'your-agent-id',
})
export function ElevenLabsVoiceUI() {
return <Orb adapter={adapter} theme="bars" aria-label="Start ElevenLabs assistant" />
}
For private agents, pass the server-generated signedUrl or conversationToken option that your app already gives to Conversation.startSession().
State mapping
The ElevenLabs adapter is responsible for normalizing provider events into orb-ui states. Keep the UI language simple:
- connecting
- listening
- speaking
- error
Theming
The circle theme works well for assistant-style voice interfaces. The bars theme is useful when you want a waveform-adjacent feel.
<Orb adapter={adapter} theme="circle" aria-label="Start ElevenLabs assistant" />
<Orb adapter={adapter} theme="bars" aria-label="Start ElevenLabs assistant" />
Clickable themes render as <button type="button"> controls, so they work with keyboard activation and accept forwarded attributes like id, data-*, and aria-label.
Controlled mode
If your app owns more of the ElevenLabs session lifecycle, pass state and volume directly.
<Orb state={state} volume={volume} theme="circle" />
Last modified on June 5, 2026