My issues with Choosing the best WebRTC SDKs

My issues with Choosing the best WebRTC SDKs

I have been trying to learn and build a bunch of WebRTC apps for quite a while. While I have succeeded, I have also faced my fair share of issues and challenges while building these apps.

With so many SDKs on the market that allow you to integrate WebRTC in an app, choosing one that works for you can be pretty challenging.

Now, some of the most common SDKs that people go with are Agora, Twilio, and even Zoom Meetings SDK. All of these can be integrated into an app built for Android, iOS, or native apps for an operating system of your choice.

I, personally, would definitely go for something that gives me the flexibility to build an app for all these platforms but there’s more to it than that. After trying out these SDKs I know a little bit about what I wanted and how to choose the perfect SDK for my apps. I am just trying to document my finding in a blog post that may help someone else make a decision.

I will list down my observations & functional challenges about Agora, Twilio, and Zoom Meetings SDKs one by one very briefly but if you have time, do go ahead and read this in-depth comparison which inspired me to jot down this blog post - Agora vs Twilio vs Jitsi vs Zoom vs 100ms.

Keep in mind that I won’t compare the pricing because that is a very subjective way to decide on one of these SDKs. Every service will have something different to provide and their pricing will reflect that, so it’s up to you as a developer/brand to decide.

Agora.io

  • The biggest limitation with Agora is that a meeting cannot have more than 17 hosts in a meeting. This can be a challenge for apps where there’s a clear requirement to have a bunch of different hosts. Use cases such as virtual events may face a lot of limitations due to this.
  • Often time I have heard from my dev friends that integrating Agora into their apps has been quite challenging and time-consuming.
  • They also have issues with browsers such as Chrome, Firefox, and Safari.
  • On Chrome, if you’re running an AMD processor, the users can face a low bitrate issue with the H.264 codec. The bitrate can go even lower than the set value unless you manually switch to using the VP8 codec or you disable hardware acceleration.
  • On Safari 15.4 the audio can start having issues if you set the sample rate as 32,000 Hz. Even older versions of Safari have many other issues. With such a huge population of people using Safari as their default browser, this can create inefficiencies with your application.
  • Coming to Firefox, it has functional issues on the Apple Silicon M1 chips where it can’t use the H.264 codec at all. Now, this is something that Firefox needs to fix but ultimately this affects the functionality of Agora’s SDK and hence the reason I have listed this here.

Check Agora’s known issues page to look at all the other issues.

Twilio

  • First of all, Twilio’s SDK can only be integrated into iOS, Android, and Web. There is no way you can integrate into other frameworks and platforms such as React Native, Flutter etc.
  • The number of participants is limited to 50 which also includes the hosts… what?!
  • You will not be able to use RTMP to stream your videos.
  • When it comes to recording, developers will need to manually compose recordings. There’s absolutely no way to make it easier.

    Zoom

  • While Zoom is capable of handing a good number of hosts and participants, the limited way in which you can define roles with their SDK stands out the most. Zoom is good for a basic use case because of its predetermined roles as a host and a participant. If you want to define any other roles, Zoom’s SDK should not be your choice.
  • Integrating this SDK can become a nightmare considering the footprint it carries.

    An extra observation - 100ms

    While looking at other SDK options, I came across the comparison post hyperlinked earlier and that introduced me to 100ms. They seem to be working with a good number of brands and have a nice compact SDK that integrates a lot of things. They can be integrated into iOS, Android, and Web, and other than that there’s Javascript, Flutter, and React Native.

I also noticed the “100ms Marketplace” that features a bunch of different starter kits that one can start with.

Referring to their blog post about their comparison with other SDKs, they have mentioned the following limitations. They don’t have Simulcast - which can be an important functionality for some. They lack servers in South America as well as ANZ.

Signing off

Well, as mentioned, I am only here to compare the limitations of these SDKs and you can definitely read an in-depth comparison on the hyperlink mentioned above. By the way, here’s a great piece of information on how to choose the right WebRTC SDK for yourself.

Looking forward to hearing what you think. Maybe I missed something that you know?