Unifying Our Calling Platform with WebRTC
So...what is WebRTC, and how is it used at TextNow?
In fact, if you’ve ever used your browser to make a call through TextNow’s web-calling feature, then surprise! You’ve also used WebRTC. In fact, that’s how we found WebRTC worked so well compared to our previous solutions that we’re now expanding the use of it across all of our applications in our goal to provide our customers with high quality calling for free or as close to free as possible.
(Brief) History of WebRTC
WebRTC at TextNow
TextNow got its start with WebRTC in the fall of 2018. We were building a new, in-house calling backend, and for the first time we had the ability to integrate closely with our calling applications across web, iOS, and Android platforms. This gave us the ability to use WebRTC for our browser calling feature, since WebRTC comes for free in modern browsers. That meant it was easily accessible to our web app, and it opened the door for employing WebRTC for calling at TextNow.
We embrace these types of experiments at TextNow. Since we own the full calling stack — from client to backend — we have the freedom to build out and optimize calling to benefit our users in the best ways possible.
Right from the beginning we saw great improvements to call quality. And, almost as good, we ended up with a clean, light calling implementation thanks to the simplicity of the WebRTC APIs.
Android and iOS
Next, we took a hard look at calling in our iOS and Android apps, and thought about where we wanted to grow our calling experience. We’ve provided calling for a long time now, and while our solutions have worked well for our customers, there were two core areas where we wanted to grow:
- Call quality. The bar can never be too high here, and if there’s any way we can improve call quality for our users even more, we’ll take it!
- Call reliability and feature development. Our existing calling code, while working well, had grown over the years. Our code consisted of two separate implementations across Android and iOS. This was starting to cause some maintenance issues and impeded our ability to quickly develop new features across both apps in parallel.
We looked at several different options, and again settled on WebRTC for our Android and iOS apps. Our research showed that WebRTC had the quality related features we wanted. Even better, WebRTC builds against Android and iOS out of the box, meaning we could unify our calling code across our Android and iOS apps. We knew this would enable us to move faster in building out calling across all of our apps simultaneously.
As we headed into 2020, Project 20 (we’re in 2020, get it?) was born. But the story doesn't end there….
Stay tuned for Part 2 where we discuss Project 20, how we’re already using WebRTC to improve your calling experience in our apps, and where we want to take calling in the future.
[To hear more hot C++ talk from Dave Hegedorn, put this episode of the CppCast, the internet’s premier C++ podcast, into your earholes. — Ed.]