Component props
The rendered LocalVideoTile component
Use LocalVideoTile for the local user's video - it provides the video element that the Hiyve client attaches to. For remote participants, use VideoTile.
When to use LocalVideoTile vs VideoTile:
When to use LocalVideoTile directly vs VideoGrid:
Key Features:
Hiyve Client Integration:
The localVideoElementId prop is required and must match the ID used when
calling client.connectTransports({ localVideoElementId: '...' }). The
Hiyve client will automatically attach the local video stream to this element.
Basic usage:
import { LocalVideoTile } from '@hiyve/react-ui';
// The localVideoElementId must match what you pass to connectTransports
<LocalVideoTile
localVideoElementId="local-video"
userName="Me"
/>
// In your connection code:
await client.connectTransports({ localVideoElementId: 'local-video' });
With recording indicator and timer:
<LocalVideoTile
localVideoElementId="local-video"
userName="Me"
isRecording={true}
showTimer={true}
roomStartTime={roomStartedAt}
/>
With flip and zoom controls:
<LocalVideoTile
localVideoElementId="local-video"
userName="John Doe"
showFlip={true}
showZoom={true}
isMuted={{ audio: isMicMuted, video: isCameraOff }}
/>
Full customization:
<LocalVideoTile
localVideoElementId="local-video"
userName="John Doe"
showFlip={true}
showZoom={true}
showTimer={true}
roomStartTime={new Date()}
isRecording={true}
isMuted={{ audio: false, video: false }}
labelPosition="bottom-left"
controlPosition="bottom-right"
indicatorPosition="top-left"
timerPosition="top-right"
colors={{
background: '#1a1a1a',
recordingIndicator: '#ff0000',
}}
styles={{
borderRadius: 12,
controlButtonSize: 'medium',
}}
labels={{
recording: '● REC',
localUserSuffix: '(You)',
}}
renderProps={{
formatDuration: (seconds) => `${Math.floor(seconds / 60)} min`,
renderOverlay: () => <CustomBadge />,
}}
/>
VideoGrid from @hiyve/react-ui for automatic layout of all tiles
LocalVideoTile displays the local user's video with controls and indicators.