> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # WebRTCApiProvider > Provides custom WebRTC API implementations for non-standard environments. Provides custom WebRTC API implementations for non-standard environments. Use this when the standard browser WebRTC APIs are not available or need to be replaced (e.g., Citrix HDX, React Native, Electron). ## **Examples** ```typescript import { SignalWire, type WebRTCApiProvider } from '@signalwire/js'; const provider: WebRTCApiProvider = { RTCPeerConnection: CustomRTCPeerConnection, mediaDevices: { getUserMedia: (constraints) => customGetUserMedia(constraints), enumerateDevices: () => customEnumerateDevices(), addEventListener: (type, listener) => { ... }, removeEventListener: (type, listener) => { ... }, } }; const client = new SignalWire(credentialProvider, { webRTCApiProvider: provider }); ``` ## **Properties** **`mediaDevices`** `WebRTCMediaDevices` — required Custom media device access. Only the methods used by the SDK are required. See [`WebRTCMediaDevices`](/docs/browser-sdk/v4/reference/interfaces/webrtc-media-devices). --- **`RTCPeerConnection`** `(configuration?) => RTCPeerConnection` — required Custom RTCPeerConnection constructor. --- > Provides custom WebRTC API implementations for non-standard environments.