Apache Cordova: Is there a future for it?
To find explicit reasons for such a controversial reputation and outline Cordova’s prospects, let’s look at its current position on the market, capabilities in terms of general performance and security, as well as compatibility with the mobile platforms.
Apache Cordova vs. Adobe PhoneGap
The majority of questions on Cordova revolve around its difference from PhoneGap (or rather, around the very fact that such a difference exists), so let’s tackle it first.
If we skip some twists and turns of the acquisition, PhoneGap is Adobe’s proprietary product and Cordova is Apache’s open-source project. Technically, they are almost one and the same framework with a very similar API but different names. Additionally, PhoneGap has some minor Adobe-developed build services, which can be useful for some projects and unnecessary for many others.
Although right now Adobe doesn’t plan to discontinue PhoneGap (and even hosts an annual event called 'PhoneGap Day'), the framework’s support can be ended as soon as Adobe decides to do so. Meanwhile, Cordova will always stay open source and continue existing as long as its user community is active.
App market share
According to AppBrain statistics, Cordova takes up 6.34% apps and 1.09% installs of the entire market, and around 1.20% of the top-500 U.S. apps and installs. The result is rather unimpressive, yet better than that of Appcelerator (with its top-500 market share of 0.02% and 0.00% for apps and installs respectively). Sadly, although Cordova apps account for rather low 4.21% of all new apps, the installation rate is even lower – 1.09%.
Business size share
A leader in development for small businesses (84.4%), Cordova has a low share of use for mid-market (12.5%) and very low – for enterprise purposes (3.1%). At the same time, Xamarin’s enterprise development share (22.6%) is very close to native Android (26.9%).
Cordova is reported to be used for development of Events (16.81% of all Cordova apps), Business (16.80%), Healthcare (15.33%), Finance (15.25%), Shopping (13.23%), Travel (12.07%) and Sports (11.94%) apps. By targeting these complex categories, Cordova has low chances at living up to their expectations, hence the low install rates. Still, the LINE messenger (500 million installs, mainly across Japan and Indonesia), a banking mobile app by ICICI Bank (Indian largest private bank with $109 billion in assets) and the Amazon India shopping app are among the most popular Cordova-based apps.
Personalization can be considered to be the least popular category for Cordova development, since only 0.22% of apps in this category are created with this framework. However, the recent Flurry statistics report Personalization apps to have drastically lost their market share overall, so blaming Cordova for any incompetency in this regard would be irrelevant.
Things are different with the development of Simulation (0.75%), Photography (1.36%) and Gaming hybrid mobile software (from 1.31% to 2.94%, varies from genre). For these categories, Cordova is objectively a poor choice due to performance limitations that we tackle in the 'performance' section.
According to g2crowds.com, the review categories where Cordova gets the highest developers' ratings are 'Ease of doing business with' (8.8) and 'Ease of Use' (8.2), while the lowest ratings are for Cordova's 'Quality of Support' (7.3) and 'Product Direction' (7.6). Yet, if compared with Android Native, Ionic and Xamarin simultaneously, no Cordova rating is higher than those of the other three mobile development tools. Basically, even when Cordova deserves a B+ from the audience, other tools get an A or A+.
Apart from a 300ms lag that precedes every Cordova app launch, the processing of all mobile app data is fairly slow, while any background processing isn’t possible at all. Despite multiple ‘speed-up’ JS scripts, DOM manipulation is the major reason of decreased performance speed, and the only workaround - to keep DOM elements simple and constantly reuse them - is only possible for apps with a simple logic.
Cordova apps are contained in an invisible browser, and browsers (no matter visible or not) are initially designed to keep their content isolated from hardware, so that it couldn’t harm the device. Communication between Cordova software and device hardware can only be implemented via specific plugins, written in C++ or native code. Core plugins that give access to Battery, Camera, GPS, and Accelerometer are already made available for multiple Cordova-supported platforms and other plugins are being constantly developed by the community.
Cordova has a low FPS rate and lacks libraries that are necessary for enabling advanced graphics. To implement quality graphics for complex games and apps that need high-resolution photo/video, developers need to find a lot of workarounds and plugins that increase graphics display and capturing capabilities. One of such plugins was provided on February 13, 2017 by Applied Recognition; it allowed Cordova developers to use their FaceLocate algorithm for Ver-ID authentication.
Cordova releases for new Android and iOS versions don’t happen fast. For example, Android API-level 24 (7.0) was released in August 2016, yet in March 2017 Cordova still supported API levels up to 23 (6.0) only. Same goes for iOS: iPhone7, released in September 2016, wasn’t on the list of Cordova-supported devices in spring 2017. Software updates for Windows Phone are less frequent, and Blackberry versions appear even more rarely.
From Cordova’s 3.5 version on, the support of iOS5 (and lower) as well as Android 4.3 Jelly Bean (and lower) has been discontinued. For Cordova apps to run on older platforms, specific plugins are necessary. Still, Cordova Security Guide strongly advises to set target API level higher than 10 (this is Android 2.3 Gingerbread, no longer supported by Google and manufacturers due to security breaches).
Additionally, there’re specific compatibility issues with Android’s native webview. To effectively adapt a Cordova mobile app for Android, many developers use Crosswalk – a tool that serves as an alternative webview with an extended list of possibilities.
The latest Cordova software lets developers compile a mobile app with a license that prevents web inspection. It’s not so easy with the source code, app documents, local storage and web directory though, as they can be discovered, decrypted and inspected. Secure HTTP and other plugins that relate to sensitive information can boost security, but extensive use of plugins can undermine security on its own. For this reason, mobile app developers should find a delicate balance in a number of plugins that will keep an app both functional and secure.
In a nutshell
In the recent years, Cordova software has significantly evolved from what was understood under ‘hybrid’ development before. Now, its performance and capabilities can be enhanced via plugins that are continuously delivered by the community. There’s no point in relying on plugins completely though, since their number should be strictly limited for security purposes. Besides, implementing multiple plugins can account for the same budget as native or Xamarin development costs.
Cordova is mostly favored by small businesses, who want their unsophisticated apps be delivered quickly and at a reasonable price. Although the app market share of Cordova apps and installs isn’t great, it gets quite positive reviews from developers and is controversially used in such complex industries as healthcare and finance. There’s a chance that exactly this gap in industry-specific requirements and Cordova’s capabilities may be the reason of a low number of installs and adoption.