From d139da192db5c9738572346976bc4a95464c937a Mon Sep 17 00:00:00 2001 From: davidliu Date: Tue, 23 Jun 2026 20:12:23 +0900 Subject: [PATCH 1/2] Skip pre-populated media sections on React Native --- .changeset/slow-olives-fry.md | 5 +++++ src/room/RTCEngine.ts | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changeset/slow-olives-fry.md diff --git a/.changeset/slow-olives-fry.md b/.changeset/slow-olives-fry.md new file mode 100644 index 0000000000..eee857f7be --- /dev/null +++ b/.changeset/slow-olives-fry.md @@ -0,0 +1,5 @@ +--- +'livekit-client': patch +--- + +Skip pre-populated media sections for single peer connections on React Native diff --git a/src/room/RTCEngine.ts b/src/room/RTCEngine.ts index 5a5aa006bd..9436654e94 100644 --- a/src/room/RTCEngine.ts +++ b/src/room/RTCEngine.ts @@ -92,6 +92,7 @@ import type { LoggerOptions } from './types'; import { Future, isPublisherOfferWithJoinSupported, + isReactNative, isVideoCodec, isVideoTrack, isWeb, @@ -857,7 +858,15 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit */ private applyInitialPublisherLayout() { this.createDataChannels(); - this.addMediaSections(initialMediaSectionsAudio, initialMediaSectionsVideo); + /** + * Native libwebrtc does not support pre-populating the media sections, + * so we skip it for React Native. + * + * Related: https://github.com/livekit/rust-sdks/pull/1151 + */ + if(!isReactNative()) { + this.addMediaSections(initialMediaSectionsAudio, initialMediaSectionsVideo); + } } private addMediaSections(numAudios: number, numVideos: number) { From a05c23ea6be9cdaab56a9a54b0b03717a22ce384 Mon Sep 17 00:00:00 2001 From: davidliu Date: Tue, 23 Jun 2026 20:15:54 +0900 Subject: [PATCH 2/2] lint --- src/room/RTCEngine.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/room/RTCEngine.ts b/src/room/RTCEngine.ts index 9436654e94..003db5fc8c 100644 --- a/src/room/RTCEngine.ts +++ b/src/room/RTCEngine.ts @@ -861,10 +861,10 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit /** * Native libwebrtc does not support pre-populating the media sections, * so we skip it for React Native. - * + * * Related: https://github.com/livekit/rust-sdks/pull/1151 */ - if(!isReactNative()) { + if (!isReactNative()) { this.addMediaSections(initialMediaSectionsAudio, initialMediaSectionsVideo); } }