wide-mechanic-8799
04/16/2026, 11:24 AMtall-airline-16756
04/16/2026, 11:24 AMwide-mechanic-8799
04/16/2026, 11:24 AMtall-airline-16756
04/16/2026, 11:26 AMwide-mechanic-8799
04/16/2026, 11:28 AMtall-airline-16756
04/16/2026, 11:29 AMmedia.peerconnection.enabled, media.navigator.permission.disabled, media.peerconnection.stats.enabled). If so, reset them to defaults.
1. Confirm LiveKit client/SDK usage (if applicable)
◦ Are you testing the public LiveKit Connection Tester page, or your app using a LiveKit JS SDK? If your app, which LiveKit JS SDK version are you running?
Why these steps: Firefox sometimes handles getStats and connection state transitions differently; extensions, strict privacy settings, enterprise policies, or custom about:config flags often cause getStats failures even when ICE/TURN succeed.
What I need from you next
• Console logs or screenshots of DevTools console during the failed test.
• Whether the user’s Firefox had extensions or enterprise policies enabled.
• Which LiveKit SDK version is in use if this is in your app (not the public tester).
If you share the console output and SDK version, I’ll correlate the errors to known Firefox behaviors and provide exact remediation or a workaround.
, with interactive elementswide-mechanic-8799
04/16/2026, 11:38 AMtall-airline-16756
04/16/2026, 11:38 AMwide-mechanic-8799
04/16/2026, 11:40 AMtall-airline-16756
04/16/2026, 11:40 AMwide-mechanic-8799
04/16/2026, 11:46 AMtall-airline-16756
04/16/2026, 11:47 AMwide-mechanic-8799
04/16/2026, 1:54 PMtall-airline-16756
04/16/2026, 1:54 PMrtcConfig: { iceTransportPolicy: 'relay' } to ensure relay-based media if extensions still interfere.
• Ask users to keep Firefox up to date and check for any about:config WebRTC flags changed—reset to defaults if unsure.
If you want, I can:
• Provide a short troubleshooting script the user can run (step-by-step to isolate the extension).
• Explain how to create a dedicated Firefox profile for calls.
• Walk through adding a site exception for Enhanced Tracking Protection.
Which option would you like me to prepare for the user?
, with interactive elementswide-mechanic-8799
04/16/2026, 1:59 PMrtcConfig: { iceTransportPolicy: 'relay' } likely to be helpful in general for people encountering issues with connecting? Or would it only really be a fallback for this particular problem in Firefox? I’m wondering if I couldn’t set it behind a “Try again” button in our app if the room connection fails?tall-airline-16756
04/16/2026, 2:00 PMrtcConfig: { iceTransportPolicy: 'relay' } is a useful general fallback, not just a Firefox workaround.
When it helps
• Useful for restrictive networks that block UDP/ICE or perform deep packet inspection (corporate Wi‑Fi, some mobile carriers).
• Helpful when ICE/TCP/UDP attempts fail but TURN over TCP/TLS (port 443) can get through.
• Can resolve cases where browser extensions or privacy settings disrupt direct peer connectivity by forcing relay through TURN.
Tradeoffs
• Higher latency and bandwidth costs because all media is relayed through TURN.
• Not guaranteed to fix every case (TURN still must be reachable).
• Shouldn’t be the default for all users — prefer direct peer paths when available.
Recommended implementation
1. Try normal connection first (default behavior).
2. On failure (e.g., engine not connected / publish timeout), show a “Try again with relay” button.
3. On retry, connect with:
◦ rtcConfig: { iceTransportPolicy: 'relay' }
1. Optionally run your Connection Test / ConnectionCheck before retrying to confirm TURN reachability.
2. Log which users fall back to relay so you can monitor frequency and impact.
If you want, I can draft the exact retry UI flow and a small code snippet showing how to reconnect with relay and detect the original failure types to trigger the fallback. Which would be most helpful?
Sources: Firewall Tips | Diagnosing Connection Errors with Connection Test Utility, with interactive elements