Releases: twilio/react-native-twilio-video-webrtc
Releases · twilio/react-native-twilio-video-webrtc
3.4.0
Changes
- Updated React and React Native peer dependencies to allow compatible version ranges.
- Added the previously Android-only callbacks to iOS (
onCameraSwitched,onVideoChanged,onAudioChanged,onLocalParticipantSupportedCodecs) so both platforms now emit identical events. - Added camera lifecycle callbacks (
onCameraDidStart,onCameraWasInterrupted,onCameraInterruptionEnded,onCameraDidStopRunning) on Android to be consistent with IOs. - Added parity callbacks for the full recording lifecycle plus local/remote track publish, unpublish, and subscription failure events across Android and iOS (docs, PropTypes, and TypeScript updated). Newly exported callbacks:
onRecordingStarted,onRecordingStoppedonLocalAudioTrackPublished,onLocalAudioTrackPublicationFailedonLocalVideoTrackPublished,onLocalVideoTrackPublicationFailedonLocalDataTrackPublished,onLocalDataTrackPublicationFailedonRemoteAudioTrackPublished,onRemoteAudioTrackUnpublished,onRemoteAudioTrackSubscriptionFailedonRemoteVideoTrackPublished,onRemoteVideoTrackUnpublished,onRemoteVideoTrackSubscriptionFailedonRemoteDataTrackPublished,onRemoteDataTrackUnpublished,onRemoteDataTrackSubscriptionFailed
- Added
sendBinaryAPIs (Android/iOS native + JS bridge) and Example App controls for sending Base64-encoded payloads over the data track - Added binary payload support to
onDataTrackMessageReceived, emittingpayloadBase64andisBinaryfor non-string messages - Android now assigns human-readable track names (
camera,microphone,screen) when creating local video, audio, and screen-share tracks sotrackNamein events matches iOS. - Android and iOS now label local data tracks as
data, keeping the emittedtrackNameconsistent across platforms. - Added default value to
autoInitializeCameraand deprecated it to show future removal. - Example App upgraded to React Native
0.82.1and React19.1.1. - Updated native Twilio Video SDKs to Android
7.10.0and iOS5.11.0. - Added automated version constants generation for Twilio Video Insights reporting. The SDK version from
package.jsonis now embedded into native iOS (RCTTWVideoConstants.h) and Android (TwilioVideoConstants.java) files via template files and apreparescript. This ensures the correct SDK name and version are reported to Twilio Video Insights. - Fixed a bug on iOS where screensharing wasn't working with H.264 codec enabled. The screen share track will be limited to a max resolution of 1280x720 when using H.264, which is the maximum resolution supported by the native Video iOS SDK.
- Added new method
fetchRoomto request the room object and a new callbackonRoomFetchedto handle the response. - Fixed an Android bug where
roomNamewas reported asroomSidwhenroomNamewas not passed as a connection option.
Fixes
- Fixed an Android freeze triggered by
react-native-reanimatedanimations interacting with Twilio video views by ensuring layout updates are a posted asynchronously on the UI thread.
Known issues
- Screensharing on iOS only supports in-app sharing. The screen share track will freeze when the app is backgrounded.
3.3.0
Changes
Platform & Dependency Updates
Native SDKs:
- Updated native Twilio Video Android SDK to
7.9.0. - Updated native Twilio Video iOS SDK to
5.10.
Core Dependencies:
- Updated React Native to
0.81. - Updated React to
19.1. - Updated Expo to
54.0.
Build Tools & Plugins:
- Removed old
babel-eslintand installed@babel/eslint-parser. - Updated
expo-build-propertiesto^0.14.8. - Updated
expo-module-scriptsto^4.1.10. - Updated
gulpto^5.0.1. - Updated
gulp-load-pluginsto^2.0.8. - Added
tsconfig.jsonfor TypeScript configuration of the Expo config plugin.
Documentation:
- Updated documentation to reflect new APIs and installation steps.
Package:
- Updated the npm package name from react-native-twilio-video-webrtc to @twilio/video-react-native-sdk
Example App
- Revamped the example app. The new example app is rebuilt on the updated stack and showcases all SDK features (calls, remote mute, etc.).
Features
- Added ability to mute remote participants (this functionality was previously missing on iOS).
- Added screenshare functionality on both iOS and Android. Screensharing can be enabled in a room with
toggleScreenSharing(true)and disabled withtoggleScreenSharing(false) - Added new callbacks onRoomIsReconnecting and onRoomDidReconnect (Android & iOS) to detect signalling interruptions and successful reconnections.
- Data track is now optional on both iOS and Android. It is managed similarly to audio and video tracks: use the
enableDataoption to control whether the data track is published when connecting, andsetLocalDataTrackEnabledto enable or disable the data track during a call.
Fixes
- Fixed an issue where the iOS native
connectmethod was incorrectly handling BOOL types, which caused crashes when establishing a connection. - Resolved a bug in the native Android component where a string reference was improperly passed, resulting in runtime errors.
- Removed unused
disableOpenSLESmethod fromCustomTwilioVideoView. - Fixed a bug on Android where a video track could not be published to a room with
enableVideo: false - Fixed an inconsistency between
enableVideo: falseandenableAudio: falseconnect parameters. WithenableAudio: falsea disabled audio track will not be intially published to the room, matching the behaviour ofenableVideo: false - Fixed track cleanup issue on iOS where audio tracks were not properly unpublished when users disconnect, causing tracks to appear as disabled instead of being removed from the room
- Fixed autoInitializeCamera prop being treated as true when undefined
- Fixed an iOS crash caused by local tracks not being cleared after a failed connection attempt
Potential Breaking Changes
iOS Track Behavior Changes
- Audio and Video Track Disable Behavior: The iOS implementation has been updated to match Android behavior. When disabling local audio or video tracks using
setLocalAudioEnabled(false)orsetLocalVideoEnabled(false), tracks are now only disabled rather than being unpublished and destroyed. This means:- Disabled tracks remain in the room as disabled tracks (matching Android behavior)
- Tracks can be re-enabled without recreation
- This change ensures consistent behavior across iOS and Android platforms
- Impact: Apps that relied on the previous iOS behavior where disabling tracks would completely remove them from the room may need to be updated
Platform Specific Notes
Android
- Native SDK bumped to
7.9.0. - Expo builds: Migrated from Android Support Library to AndroidX.
iOS
- Native SDK bumped to
5.10. - Remote participant mute support added (previously missing on iOS).
Known issues
- Screensharing on iOS only supports in-app sharing. The screen share track will freeze when the app is backgrounded
- Screensharing on iOS is only supported using VP8 codec. Screen share tracks will fail to publish when H.264 codec is used
roomNameis reported asroomSidwhen we don't pass theroomNameon the connection options (Android only)- Android screenshare can become unresponsive when
react-native-reanimatedcomponents are present; avoid including such components in the same view as the screen share component.