DailyTrackState describes the current condition of one media track — camera, microphone, screen share, or custom — from the local participant’s point of view. It appears as a value in DailyParticipant.tracks.
Properties
true | false | 'staged'
Whether the local participant is subscribed to this track. Only meaningful for remote participants — local tracks are always implicitly subscribed.
true— subscribed and receivingfalse— not subscribed'staged'— SDP negotiated but no bytes are flowing; track can transition toplayablefaster when set totrue
updateParticipant() with setSubscribedTracks.string
The complete, mutually exclusive state of the track from the local participant’s point of view.
object
Present when
state is 'off'. Indicates why the track is off. All sub-fields are optional booleans.object
Present when
state is 'blocked'. Indicates why the track cannot be sent. All sub-fields are optional booleans.MediaStreamTrack | undefined
The underlying
MediaStreamTrack. Only present when state === 'playable'. Only available in call object mode.Prefer persistentTrack for attaching to media elements.MediaStreamTrack | undefined
The underlying
MediaStreamTrack. Present whenever a track exists, regardless of state. Only available in call object mode.Recommended over track as a proactive defense against black frames during call disruptions and browser limitations. Use track only when you need a guarantee that media is currently flowing.