In 2015 and 2016 we’ve spent quite some time developing a mobile application using apache Cordova. In this blog post I’m highlighting some of the findings we had before, during and after developing hybrid mobile apps using web technology.
To start off, I’ve had several previous experiences with Phonegap and Cordova. In multiple occasions I have given the platform a chance, mostly because of my and my team-mates experience with web technology. We are a web development team by heart, and the idea of using our experience and knowledge in web applications to develop a mobile application has always been a seductive path to get into mobile app development.
Performance and user experience
In the start of the application development, we’ve given ionic a shot. The platform was actually quite decent, and delivered some smooth performance in scrolling lists but we soon found out that overwriting all the skins in ionic to match the custom design of our app was too much of a hassle. We switched away from ionic to our own custom responsive styles which gave us a lot of freedom in styling the application just how it was originally designed, instead of changing the design to fit the underlying technology.
So the plug-ins in Phonegap / Cordova have always been the greatest source of struggles. The plug-ins were mostly written by web developers with a little bit of native iOS / native android experience and usually only suited 1 specific case: the case they were used for by the original developer.
Over the years, the available plug-ins have gotten a lot better. Especially at the end of 2015, we’ve seen major improvements to the plug-ins we are using ourselves. The local notifications plug-in that powers a great deal of the functionality in our application has really been overhauled in 2015 and is now very reliable.
Android and Crosswalk
Android web view performance was also a topic high on the issue list. The diversity of the android ecosystem is still quite big, as there are a lot of cheaper, low powered devices around running up to date versions of the android operating system. We have found that supporting only android 4.1+ devices was a safe cutoff point to avoid having users being stuck in the application simply because the CPU can’t catch up to the web application.
A big sigh of relief was given by the arrival of the crosswalk plug-in. This plug-in switches out the android native web view for a chromium web view, effectively allowing you to target one single web browser version instead of coping with the plethora of available android web views. In addition, the chromium web view performed a lot better than the stock android web view in a lot of cases, so this solved a lot of issues on the android part.
A big advantage point of hybrid apps that is often overlooked is the simplification of quality assurance. Because there is one codebase for all (both) platforms, business logic is reused and therefore consistent. When testing the resulting applications, bugs found in either application are immediately solved in both places.
We have had a lot of discussions about hybrid applications vs native applications. In the end we definitely agree that the best user experience is achieved when developing two separate native apps. In our case, this would mean we’d have to build experience in both Android and iOS native development and have quality assurance test two different apps, possible developed by two separate developers.