Skip to main content
Paid plans only Live streaming broadcasts a call to an RTMP endpoint such as YouTube Live, Twitch, or a custom server. useLiveStreaming mirrors useRecording: reactive state plus start, stop, and update helpers.

Start and stop a stream

startLiveStreaming takes RTMP endpoint options and an optional layout; stopLiveStreaming ends it. isLiveStreaming reflects whether any stream is active:
The options match the daily-js startLiveStreaming() method. To change the layout or endpoints while live, call updateLiveStreaming.

Gate on permission

Like recording, starting and stopping streams requires owner status or canAdmin: 'streaming'. Gate the controls with usePermissions:

React to stream events and errors

Live streaming has more failure modes than recording (the remote RTMP endpoint can reject or drop the connection), so handle the error and warning callbacks:

Multiple concurrent streams

To run several streams at once (for example, different layouts for mobile and desktop), pass an instanceId (a valid UUID) to scope the hook. Without it, the hook returns aggregate state across all instances:
useLiveStreamingInstances lists every active stream. See the multi-instance guide for details.

Next steps

Recording

The same pattern, for recordings.

Live streaming guide

Layouts and RTMP configuration in depth.