By

Third Party WebViews on Android

I've gone over the Android WebView numerous times throughout the years, complaining about performance, and about various browser bugs that never seem to be fixed. In addition, there have been numerous people implementing third party WebViews using bundled versions of Chromium, and in Mozilla's case, a bundled version of Gecko. That being said, until now you would have to use a whole new fork of Apache Cordova, which often were behind existing versions of Chrome.

On the Apache Cordova project, we decided that it's not a good idea to get into the browser business, and instead that we should allow people to have a choice in web rendering engines so that they can be installable like plugins. We're not quite there yet, but that was the thought process behind this new proof-of-concept.

Corodva Android: https://github.com/infil00p/cordova-android/tree/pluggable_webview
Crosswalk Example Engine: https://github.com/infil00p/cordova-crosswalk-engine (requires the crosswalk core library)

Currently only have Crosswalk implemented to work with this, but hopefully GeckoView will soon be added as well, as well as a Chromium view from Google that's decoupled from the default WebView. There are some downsides to this approach, such as:

  • Third Party Libraries make applications larger - A crosswalk version of Mobile Spec currently weighs in at 54.95 MB
  • Third party webviews aren't always on - Android WebView is already initalized, and is starts quickly. A third party webview may be slower to start.
  • Third Party webviews have their own bugs

The goal of this change is to promote choice and to allow for users to use whichever rendering engine they feel works best for their project. Despite the flak that the Android WebView currently gets, there are a LOT of projects where it's far more appropriate than Crosswalk. Ideally, we would like to see more choices for developers.