Video SDK WebRTC Failure in Restrictive Network Environments (Prison Facilities)
Video SDK Type and Version
-
Package:
@zoom/videosdk
-
Version:
^2.2.5
-
Platform: Web (React application)
Description
The Zoom Video SDK fails to initialize in highly restrictive network environments, specifically within prison/correctional facility networks where WebRTC connections are blocked by firewalls. The SDK crashes with the following error:
Error Message
VM5:952 Uncaught TypeError: Cannot destructure property 'shouldUseWebRTC' of 'Pi.getWebRTCCapability(...)' as it is undefined.
at index-C42V1Njq.js:2303:87776
at index-C42V1Njq.js:2212:20330
at c._next (index-C42V1Njq.js:2212:5478)
...
Root Cause
The SDK attempts to call getWebRTCCapability()
which returns undefined
when WebRTC is blocked by the network firewall, causing the application to crash during initialization. The SDK does not gracefully handle environments where WebRTC is unavailable.
Environment Details
-
Network: Facility with strict firewall rules
-
Browser: Chrome/Edge (latest versions)
-
Camera/Microphone: Not being triggered at all due to SDK crash before media device access
How To Reproduce
Steps:
-
Authentication method: JWT token-based authentication
-
Network simulation: Test on a network that blocks:
- WebRTC peer connections
-
Initialization code:
import ZoomVideo from '@zoom/videosdk';
const client = ZoomVideo.createClient();
// This crashes when WebRTC is blocked
await client.init("en-US", "CDN", {
patchJsMedia: true,
enforceMultipleVideos: true,
});
// Attempt to join session
await client.join(sessionName, token, userName);
- Error occurs: During
client.init()
when SDK tries to detect WebRTC capabilities
Browser Console Behavior:
-
No camera/microphone permission prompts appear
-
SDK crashes before reaching media device initialization
-
getWebRTCCapability()
returnsundefined
-
Application becomes unresponsive
Troubleshooting Routes Already Exhausted
2. Implemented Workarounds (Attempted)
// Added WebSocket endpoint configuration
await client.init("en-US", "CDN", {
patchJsMedia: true,
enforceMultipleVideos: true,
webEndpoint: "zoom.us", // Added for WebSocket fallback
});
// Added capability detection with error handling
let webRTCCapability = null;
try {
webRTCCapability = client.checkSystemRequirements();
console.log("WebRTC Capability:", webRTCCapability);
} catch (error) {
console.warn("Could not check WebRTC capability:", error);
// SDK still crashes even with try-catch
}
4. Browser Configuration
-
Tested on multiple browsers (Chrome, Edge)
-
Verified browser supports WebSocket (works fine)
-
Issue persists across all browsers in restrictive networks
Actual Behavior
The SDK:
-
Crashes with
TypeError
whengetWebRTCCapability()
returnsundefined
-
Does not provide a WebSocket fallback option
-
Completely halts application execution
-
Does not reach media device access (camera/mic never triggered)
-
When checked in network tab:
https://rwcsjc3.sjc.zoom.us/wc/ping/99562723030…. apis like these are showing cancelled.
Questions for Zoom Team
-
Are there plans to add graceful degradation for restrictive networks?
-
What is the recommended approach for deploying Video SDK in firewall-restricted environments?
Request
Please provide:
-
SDK update to handle
getWebRTCCapability()
returningundefined
-
Documentation for deploying in restrictive network environments
-
Timeline for fix if this is a known limitation