Native Vs. Web Based AppThe other day a customer asked me why there is a difference in the video quality when I run my group video chat app as a native vs. a web app, so I thought I should share some thoughts about this.

Choosing the right approach for building your video-enabled app is very important. It can have a significant impact on your user experience and the adoption of your app. You can choose to build either a native app that runs directly on a mobile or desktop device, or a web app in which users can access the app through their web browser.

When considering building a native vs. web-based video chat app, the decision criteria is not solely based on the delivery method of the app. There are several other factors to consider.

Let’s look deeper into different approaches:

Web-based Video Chat Applications

When we talk about a web-based video chat app, we are really referring to implementing video chat using WebRTC. One of the big advantages of WebRTC is that it provides a common standard between all browsers. It makes communication between applications that run in different browsers possible. On the other hand, it also limits the usage of codecs to the set that is defined by WebRTC specifications, and to supported browsers.

Another advantage of WebRTC is that the client-side software needed for video chat is already built into the web browser itself. So, the user does not need to download any additional software. However, the performance is dependent upon the specific WebRTC implementation by the browser maker.

The vidyo.io JavaScript SDK handles the browser differences for you, but the actual video encode, decode, media transport, and rendering are still being performed by the browser. Therefore, the quality is limited by the browser’s capabilities. One exception to this is when the browser itself is not WebRTC compliant. For example, Internet Explorer, still commonly used in the enterprise, does not support WebRTC. To support Internet Explorer, vidyo.io provides a browser plugin that provides an embedded video client – but still delivers native app performance.

Native Video Chat Applications

Native video chat apps do require software to be downloaded and installed, unlike WebRTC. For many users, this may not be a big deal. For example, most consumers are comfortable with downloading an app to use a service on their mobile device. Also, the native installed app makes it very easy for a user to launch an app for its intended purpose, rather than trying to remember a URL and login to a website, or accidentally closing the browser tab that contains the active video chat session.

Native apps provide additional performance advantages. With a native app, the developer can directly access resources and devices connected to the device. It also means that the app has direct access to detect CPU performance and network performance, making it easier to dynamically adapt the call quality for optimal performance.

When you are using a vidyo.io native SDK, for Windows, macOS, iOS or Android, you take full advantage of Vidyo’s core technologies. This includes Vidyo’s dynamic network routing adaptation through the vidyo.io routing core. The vidyo.io routing core receives video from all endpoints and adapts the outbound video for each endpoint receiving video. It dynamically changes the amount of video sent to each endpoint, based upon available bandwidth, CPU strength, and screen resolution. The result is an individually-optimized video stream for each endpoint.

Video Chat for Web-based Native Applications

Increasingly, developers of native apps are turning to frameworks or libraries, such as Electron. These let developers build apps using HTML, CSS, and JavaScript, and output them to a native app that is installed directly on the device. They work this way by embedding the browser, typically Chromium-based, into the executable. The advantage to this approach is a faster development cycle, and typically an app that can be built for multiple platforms easily. The tendency of the developer, with this approach, is to use all web technologies when building the app. However, this would provide a native app with the potential to deliver higher performance, rather than being limited to web app performance.

The good news is that developers can get the best of both worlds. The vidyo.io JavaScript SDK has support for a browser plug-in, delivering native app performance within a browser. In the case of an app built with Electron, you can use the plugin with the embedded Chromium browser. By using this approach, the developer is still using the JavaScript SDK, making development easy.

To place a call with vidyo.io, you simply need to initialize the the VidyoConnector object, and then call the Connect function. Depending on the browser used, it automatically runs what is best for that browser. In other words, the same vidyo.io code on IE uses the plugin, but on Chrome it uses  WebRTC. The experience s seamless. The application writer does not need to know which browser it is running on. It cannot get any easier than that!

Native App Web App
  • Discrete app rather than browser tab
  • Full access to native OS and resources
  • Consistent performance across operating systems
  • Generally faster to develop
  • No software for user to download/install
  • Universally accessible on different devices
  • Requires development knowledge for supported operating systems
  • Development process can take longer
  • Can be inadvertently closed as a browser tab
  • Browser incompatibility
  • Lower degree of control
Ideal Uses
  • Power or frequent users
  • Performance sensitive applications
  • Video quality is critical
  • More than two participants
  • Occasional users
  • Convenience is more important than quality
  • Short calls
  • Two way call

If you need to diagnose video quality issues in your native app, make sure to check out the Log Viewer utility for instructions.

Sign up for free and try our native and web demo apps for video chat. Let us know what you think by contacting us at community@vidyo.com. We cannot wait to hear from you.