-
Notifications
You must be signed in to change notification settings - Fork 25k
Description
Description
Hi everyone,
Iโm building a React Native iOS app where Iโm integrating Wazo (native WebRTC) and Jitsi (WebView / WebRTC).
Use case:
Wazo is used to maintain a background call session (mainly signaling + audio keep-alive).
Jitsi is used in the foreground for video calls.
Problem:
When Jitsi starts, it takes control of the microphone and camera.
The Wazo call disconnects after ~5 minutes (likely due to media / audio session conflict).
Even if Wazo audio/video is muted or tracks are disabled, the session still drops.
My questions:
Is it officially supported or recommended to run two WebRTC stacks (Wazo + Jitsi) simultaneously on iOS?
Can Wazo stay connected without active audio/video tracks while Jitsi uses mic/camera?
Is there a way to release Wazo media streams temporarily (but keep signaling alive) while Jitsi is loading or active?
Are there any AVAudioSession / background mode limitations on iOS that make this impossible by design?
If this is not supported, what is the recommended architecture (single WebRTC pipeline, switching media ownership, etc.)?
Environment:
iOS (React Native)
Wazo SDK (native WebRTC)
Jitsi Meet (WebView)
Any guidance, documentation, or real-world experience would be greatly appreciated.
Thanks in advance ๐ @saghul @mikehardy
Steps to reproduce
๐ Steps to Reproduce the Issue
Launch the iOS application built with React Native.
Ensure the app has camera and microphone permissions granted.
Start a Wazo WebRTC call session:
Wazo initializes WebRTC
Audio/video tracks are attached
Call is active and stable
While the Wazo call is still active, initiate a Jitsi Meet video call within the same app:
Jitsi is loaded via WebView
Jitsi initializes its own WebRTC stack
Observe that Jitsi acquires camera and microphone access successfully.
Keep both sessions running simultaneously for a few minutes (~3โ5 minutes).
Monitor the Wazo session state.
React Native Version
0.79.5
Output of npx @react-native-community/cli info
System:
OS: macOS 26.0.1
CPU: (10) arm64 Apple M4
Memory: 136.47 MB / 16.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.18.0
path: ~/.nvm/versions/node/v22.18.0/bin/node
Yarn: Not Found
npm:
version: 11.5.2
path: ~/Documents/GitHub/ims-requester/imsRequester/node_modules/.bin/npm
Watchman: Not Found
Managers:
CocoaPods:
version: 1.16.2
path: /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 25.0
- iOS 26.0
- macOS 26.0
- tvOS 26.0
- visionOS 26.0
- watchOS 26.0
Android SDK:
API Levels:
- "29"
- "31"
- "34"
- "35"
- "36"
- "36"
- "36"
- "36"
Build Tools:
- 35.0.0
- 35.0.1
- 36.0.0
- 36.1.0
System Images:
- android-36.1 | Google Play ARM 64 v8a
- android-36 | Google Play ARM 64 v8a
- android-36 | Pre-Release 16 KB Page Size Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2024.3 AI-243.26053.27.2432.13536105
Xcode:
version: 26.0.1/17A400
path: /usr/bin/xcodebuild
Languages:
Java:
version: 21.0.8
path: /opt/homebrew/opt/openjdk@21/bin/javac
Ruby:
version: 3.2.2
path: /Users/bhaskarmetikel/.rbenv/shims/ruby
npmPackages:
"@react-native-community/cli":
installed: 18.0.0
wanted: 18.0.0
react:
installed: 19.0.0
wanted: 19.0.0
react-native:
installed: 0.79.5
wanted: 0.79.5
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: false
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
Screenshots and Videos
No response