Fork me on GitHub

[2014/06/20] This page will no longer be maintained. Please visit the new PeerJS status page for up-to-date information!

WebRTC implementation status

WebRTC and PeerJS are still works in (rapid) progress. Video, audio, and DataChannel are all available in stable mobile and web versions of Chrome and Firefox. Safari and Internet Explorer have not announced support for WebRTC yet.

PeerJS will not attempt to support very old versions of browsers (Chrome < 26 or Firefox < 23) because the WebRTC spec has changed dramatically since.

PeerJS compatibility

Because no browser has fully implemented the current draft WebRTC spec, these issues currently exist beyond our control, but they are likely to be fixed in future releases:

Browser support
Chrome 26+, Firefox 23+
Reliable data
Firefox supports SCTP based reliable data. Chrome 29+ support SCTP based reliable data behind the #enable-sctp-data-channels flag and Chrome 31+ supports SCTP DataChannels by default. PeerJS includes a reliable shim to emulate reliable data in browsers that don't support it. Only PeerJS 0.3.0+ allows SCTP in Chrome.
Binary data
Firefox supports binary data transfer. Chrome supports binary data in 30+ with flag and 31+ by default. (Same as reliable data, see above).
Data transfer limitations
Firefox supports high bandwidth transfers. Chrome has issues with large files. PeerJS applies chunking to large files and deals with back-pressure from data channel exceptions due to its buffer filling. Track 2270.
Detecting closed connections
Chrome will fire .on('close', ...). Cannot detect connection close on Firefox yet (for both data and media connections). The actual DataChannel's onclose never fires but PeerJS will use the iceConnectionState of the parent PeerConnection when possible.
Chrome 31+ and Firefox 27+ DataChannels are able to connect with each other (see #2279). Chrome 31+ cannot connect to older versions of Chrome in PeerJS 0.3.0 and above. Chrome and Firefox media connections can interop (see 'Media connections.').
Media connections
PeerJS 0.3.0 and above supports media stream connections. Chrome 31+ supports relaying remote media streams to another remote.

Google Chrome

Runs PeerJS
Android Stable
Android Beta

Version notes

  • SCTP DataChannels are available unflagged.
  • Annoying bandwidth issues (bandaged in PeerJS 0.3.6):
  • Can make data connections with Firefox 27+.
  • Reliable transport (but not binary) is available behind flag #enable-sctp-data-channels in chrome://flags.
  • No version of Chrome has reliable support unflagged. No version of Chrome has any binary support at all.
  • No chrome://flags required for data channel
  • Does not support binary data. PeerJS currently converts data to a binary string and back using the FileReader API
  • Limited to ~1070 bytes per message because no reliabe transport.
  • Data sent rapidly sometimes fails to deliver

Mozilla Firefox

Runs PeerJS
Mobile Stable

Version notes

  • Can make data connections with Chrome 31+.
  • Cannot detect connection closed yet:
  • oniceconnectionstatechange and iceConnectionState was implemented at some point before 26. But does not trigger on close yet.
  • Broke compatibility with versions < 0.2.8, due to a PeerJS bug. Fixed in 0.2.8
  • ICE candidates seem to work now.
  • Non-standard issues patched.
  • Remaining issues detailed here.
  • * Firefox Mobile 23's DataChannels are not interoperable with desktop browsers. Additionally, WebRTC on mobile is off by default.
  • Non-standard issues being patched in following bugs: Issue 837035 Issue 846110 Issue 837919
  • No longer compatible with DataChannel in v21.
  • ICE candidates do not work--connection is only possible locally.
  • Binary supported
  • Transfer reliable by default
  • Non-standard connectDataConnection(port, port) call required
  • STUN/TURN servers do not accept FQDN
  • ondatachannel provides a channel object rather than an event object.