Call layouts

Call layout components render participants in grid or spotlight arrangements and are used by CallContent.

Use these components directly when you need custom call screens but still want the SDK layout behavior.

CallParticipantsGrid

Renders participants in a grid-oriented layout.

General usage

import {
  Call,
  CallParticipantsGrid,
  StreamCall,
} from "@stream-io/video-react-native-sdk";

const VideoCallUI = () => {
  let call: Call;

  return (
    <StreamCall call={call}>
      <CallParticipantsGrid />
    </StreamCall>
  );
};

Props

showLocalParticipant

Controls whether the local participant is shown in one-to-one calls when floating behavior is active.

TypeDefault Value
boolean | undefinedfalse

landscape

Applies the landscape mode styles to the component, if true.

Type
boolean | undefined

mirror

Forces participant videos to be mirrored or unmirrored. By default, local front camera video is mirrored and remote videos are not mirrored.

Type
boolean | undefined

supportedReactions

Supported reactions for the call. Default reactions:

  • 🤣 Rolling on the floor laughing
  • 👍 like
  • 👎 Dislike
  • 🎉 fireworks
  • 🙌 Raised hands
  • ✋ Raised hand
Type
StreamReactionType & { icon: string }[]

CallParticipantsList

Prop to customize the CallParticipantsList component.

TypeDefault Value
ComponentType| undefinedCallParticipantsList

ParticipantView

Prop to customize the ParticipantView component entirely.

TypeDefault Value
ComponentType| undefinedParticipantView

ParticipantLabel

Component to customize the Label of the participant.

TypeDefault Value
ComponentType| undefinedParticipantLabel

ParticipantReaction

Component to customize the participant reaction display.

TypeDefault Value
ComponentType| undefinedParticipantReaction

ParticipantVideoFallback

Component to customize the video fallback of the participant, when the video is disabled.

TypeDefault Value
ComponentType| undefinedParticipantVideoFallback

ParticipantNetworkQualityIndicator

Component to customize the network quality indicator of the participant.

TypeDefault Value
ComponentType| undefinedParticipantNetworkQualityIndicator

VideoRenderer

Component to customize the participant video. Also displays the ParticipantVideoFallback.

The VideoRenderer accepts a mirror?: boolean prop to force mirroring on or off. When provided, it takes precedence over the default mirroring logic.

TypeDefault Value
ComponentType| undefinedVideoRenderer

Props

PropTypeDefault ValueDescription
participantStreamVideoParticipantThe participant whose video or screenshare should be rendered.
trackTypevideoTrack | screenShareTrackvideoTrackThe track to render.
isVisiblebooleantrueWhen false, the video stream is not shown even if it is available.
objectFit'contain' | 'cover' | undefinedundefinedHow the video fits within its container. When omitted, a default is computed from the track dimensions.
videoZOrdernumber0The z-order to apply to the underlying RTC view.
mirrorboolean | undefinedundefinedForces mirroring on or off. When omitted, the default mirroring logic is used.
ParticipantVideoFallbackComponentType | null | undefinedParticipantVideoFallbackComponent to render when video is unavailable. Use null to disable the fallback.

CallParticipantsSpotlight

Renders one participant in spotlight and remaining participants in a secondary list.

General usage

import {
  Call,
  CallParticipantsSpotlight,
  StreamCall,
} from "@stream-io/video-react-native-sdk";

const VideoCallUI = () => {
  let call: Call;

  return (
    <StreamCall call={call}>
      <CallParticipantsSpotlight />
    </StreamCall>
  );
};

Props

landscape

Applies the landscape mode styles to the component, if true.

Type
boolean | undefined

mirror

Forces participant videos to be mirrored or unmirrored. By default, local front camera video is mirrored and remote videos are not mirrored.

Type
boolean | undefined

supportedReactions

Supported reactions for the call. Default reactions:

  • 🤣 Rolling on the floor laughing
  • 👍 like
  • 👎 Dislike
  • 🎉 fireworks
  • 🙌 Raised hands
  • ✋ Raised hand
Type
StreamReactionType & { icon: string }[]

CallParticipantsList

Prop to customize the CallParticipantsList component.

TypeDefault Value
ComponentType| undefinedCallParticipantsList

ScreenShareOverlay

Component to customize the screen share overlay when a user is sharing their screen.

TypeDefault Value
ComponentType| undefinedScreenShareOverlay

ParticipantView

Prop to customize the ParticipantView component entirely.

TypeDefault Value
ComponentType| undefinedParticipantView

ParticipantLabel

Component to customize the Label of the participant.

TypeDefault Value
ComponentType| undefinedParticipantLabel

ParticipantReaction

Component to customize the participant reaction display.

TypeDefault Value
ComponentType| undefinedParticipantReaction

ParticipantVideoFallback

Component to customize the video fallback of the participant, when the video is disabled.

TypeDefault Value
ComponentType| undefinedParticipantVideoFallback

ParticipantNetworkQualityIndicator

Component to customize the network quality indicator of the participant.

TypeDefault Value
ComponentType| undefinedParticipantNetworkQualityIndicator

VideoRenderer

Component to customize the participant video. Also displays the ParticipantVideoFallback.

The VideoRenderer accepts a mirror?: boolean prop to force mirroring on or off. When provided, it takes precedence over the default mirroring logic.

TypeDefault Value
ComponentType| undefinedVideoRenderer

Props

PropTypeDefault ValueDescription
participantStreamVideoParticipantThe participant whose video or screenshare should be rendered.
trackTypevideoTrack | screenShareTrackvideoTrackThe track to render.
isVisiblebooleantrueWhen false, the video stream is not shown even if it is available.
objectFit'contain' | 'cover' | undefinedundefinedHow the video fits within its container. When omitted, a default is computed from the track dimensions.
videoZOrdernumber0The z-order to apply to the underlying RTC view.
mirrorboolean | undefinedundefinedForces mirroring on or off. When omitted, the default mirroring logic is used.
ParticipantVideoFallbackComponentType | null | undefinedParticipantVideoFallbackComponent to render when video is unavailable. Use null to disable the fallback.