In 2017, Safari announced compatibility with WebRTC. While many things have changed since then, WebRTC technology continues to evolve and move forward. Today, we’ll take a look at the status of a popular feature: screen sharing.

Let’s start by listing the approaches for enabling screen sharing in a web application. Initially, this was possible by using the chooseDesktopMedia API in conjunction with a Chrome extension. This approach worked well, but it was contrary to the no-other-software-required idea and portability of WebRTC because it only worked on Firefox and Chrome. In early 2019, the getDisplayMedia() API was announced, and now it’s possible to screen share without using any plugins!

Let’s explore the current status of both approaches on Safari. To do so, we will use the popular webrtc-experiment site.

chooseDesktopMedia API

Because Safari desktop and mobile are two different beasts, we will test them separately. Let’s start with the desktop version.

Loading the site and enabling screen sharing gives us a light of hope. It seems like it’s working, but we end up the video from the webcam instead of from the screen.

Screenshot taken of video coming from the webcam instead of the screen while using chooseDesktopMedia API on Safari desktop.

This is expected as this method relies on sending a sourceId to the getUserMedia API, which can only be obtained through an extension when using Chrome. When we move to mobile, we find the same issue. It looks like there’s no use trying to implement this approach in Safari.

getDisplayMedia API

Now let’s try the new getDisplayMedia API.

Just like before, we will try Safari desktop first. We open the site and enable screen sharing. It’s working!

Screenshot of successful screen sharing using getDisplayMedia API on Safari desktop.

Now let’s take a look at Safari mobile.

Screenshot of Safari mobile on iOS. The error message displayed says, “Safari does NOT support getDisplayMedia API yet.”

While Safari desktop made us believe that this could work, we were hit by an incompatibility error on Safari mobile. Let’s take a look at the Mozilla reference.

Mozilla reference

That confirms it: Safari iOS is not ready for WebRTC screen sharing yet.

Conclusion

While WebRTC compatibility on Safari has come a long way, it struggles to keep up with an ever-evolving technology. Safari is still a good option for simple audio and video use cases, but its lack of consistency between desktop and mobile makes it unsuitable for advanced features. We’ll keep an eye on this and hope to see improvements soon.

Recent Blog Posts