# livekit-react **Repository Path**: anmslooo/livekit-react ## Basic Information - **Project Name**: livekit-react - **Description**: livekit-react - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2023-11-02 - **Last Updated**: 2024-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LiveKit React Component Library This package provides React components that makes it easier to use LiveKit in a React app. ## Install ```bash npm install --save livekit-react ``` ## Demo https://example.livekit.io. Source available in [example](example/) ## Usage ### Video room with built-in UI Without customization, the component would use a default skin as seen in the demo above. ```tsx import { LiveKitRoom } from 'livekit-react' // CSS should be explicitly imported if using the default UI import 'livekit-react/dist/index.css' // used by the default ParticipantView to maintain video aspect ratio. // this CSS must be imported globally // if you are using a custom Participant renderer, this import isn't necessary. import "react-aspect-ratio/aspect-ratio.css"; export const RoomPage = () => { const url = 'wss://your_host' const token = 'your_token' return (
onConnected(room)}/>
) } async function onConnected(room) { await room.localParticipant.setCameraEnabled(true) await room.localParticipant.setMicrophoneEnabled(true) } ``` ### Customize rendering To provide your own rendering, override one or more of `stageRenderer`, `participantRenderer`, and `controlRenderer`. It's possible customize a single renderer and use defaults for the others. ```tsx export const RoomPage = () => { const url = 'wss://your_host' const token = 'your_token' return ( { return
}} // participantRenderer renders a single participant participantRenderer={(props: ParticipantProps) => { return
}} // controlRenderer renders the control bar controlRenderer={(props: ControlsProps) => { return
}} /> ) } ``` ### Using custom hooks The provided components make use of two hooks: `useRoom` and `useParticipant`, they will help you manage internal LiveKit callbacks and map them into state variables that are ready-to-use from React components. Using the `connect` function returned by useRoom will ensure that callbacks are registered automatically and the other state variables are updated when changes take place in the room. ```tsx import { useRoom, useParticipant } from 'livekit-react' export const MyComponent = () => { const { connect, isConnecting, room, error, participants, audioTracks } = useRoom(); ... } export const ParticipantRenderer = ({ participant }) => { const { isSpeaking, subscribedTracks } = useParticipant(participant) ... } ``` ### Rendering video and audio When building your custom UI, it's helpful to use track renderers that are provided in this library. `AudioRenderer` and `VideoRenderer` would render an audio and video track, respectively.