{
"plugins": [
[
"@stream-io/video-react-native-sdk",
{
"enableScreenshare": true,
"appleTeamId": <ADD-YOUR-APPLE-TEAM-ID>, // example: "EHV7XZLAHA"
// .. rest
}
],
]
}Expo Setup
The SDK supports two iOS screen share modes — broadcast (captures the entire device screen via a Broadcast Upload Extension) and in-app (captures your app only via RPScreenRecorder). Android setup is common to both.
Android & iOS Broadcast Setup
Configure screen share for Android and iOS broadcast mode in your Expo app by adding the enableScreenshare and appleTeamId properties to the SDK plugin in app.json:
iOS
- The
appleTeamIdfield is used for signing the new extension created for screen share. - The above configuration in the plugin will generate a new screen sharing extension named as "broadcast" and adds relevant information to your iOS app target as well.
- The plugin automatically includes all required extension files (
SampleHandler.swift,SampleUploader.swift,SocketConnection.swift,Atomic.swift,DarwinNotificationCenter.swift).
Android
The plugin adds a foreground service and the permission android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION. When uploading the app to the Play Store, declare these permissions in the Play Console and explain their usage, including a link to a video demonstrating the service. This is a one-time requirement. For more information, click here.
iOS In-App Screen Sharing
As an alternative to the broadcast extension, you can use in-app screen sharing which captures the current app's screen using RPScreenRecorder. This mode does not require the enableScreenshare or appleTeamId config plugin options — no Broadcast Upload Extension is generated.
To use in-app mode, pass type: 'inApp' in the screenShareOptions prop:
<ScreenShareToggleButton screenShareOptions={{ type: "inApp" }} />In-app mode requires no additional native setup beyond the standard Expo SDK configuration.
Screen Share with Audio
To include system/app audio in the screen share, pass includeAudio: true via the screenShareOptions prop on ScreenShareToggleButton. On iOS, audio capture is only supported in in-app mode, so include type: "inApp" together with includeAudio: true (on Android, type is ignored).
<ScreenShareToggleButton
screenShareOptions={{ type: "inApp", includeAudio: true }}
/>No additional native setup is required — the Expo config plugin includes all necessary files for both platforms. See the overview for details on platform behavior and limitations.