Cross-platform hybrid application solutions such as Cordova offer an attractive alternative to traditional native builds. Whilst in most cases native apps deliver a smoother, higher performing result, there are still areas where hybrid solutions may be suitable.
To quote from an article on Quirksmode:
“Technically, it’s simple. The web cannot emulate native perfectly, and it never will. Native apps talk directly to the operating system, while web apps talk to the browser, which talks to the OS. Thus there’s an extra layer web apps have to pass, and that makes them slightly slower and coarser than native apps. This problem is unsolvable.”
That being said, there are some niches where a Cordova powered app can be a suitable alternative. Depending on the particular use case and what the company wants the app to do, hybrid may be the suitable solution to that problem. However, with hybrid development, companies need to consider the compromises that are inevitably involved with this approach.
Here, we wanted to outline some of the technical pros and cons of hybrid app development. At Mubaloo, we always take these into account when recommending the best approach to take.
- Potential cost savings across multiple platforms
- Easy to create simple form-based apps or proof of concepts
- Works well in collaboration with Proto.io & Lookback to build interactive, recordable prototypes
- In theory you can get 100% code reuse across multiple platforms, (excluding supporting libraries, plugins etc) However, there are usually some forks in the code
- Good plugin ecosystem, if you’re targeting just iOS and Android. The majority of native functionality is available as a plugin
- With iOS 9 introducing split screen multitasking, new Cordova apps can make use of this with responsive web design feature and create a more mature web development paradigm
- If you’re targeting Android 4.4+ and iOS8+, you have near to full access to the full range of HTML5 and ECMAScript 5, which introduced a subset intended to provide more thorough error checking and avoid error-prone constructs in the hopes to reduce development time spent on debugging
- You can, if needed, build per-platform native components to supplement your project
- Speed – You will not currently get the 60 fps performance of a native app from a web app, due to the limited resources available to the WebView. However newer devices are closing this gap
- Performance – Whilst HTML5 offers strong animation capabilities, the performance on mobile devices does not match that of native apps
- High regression testing costs – a shared code base means making a change that works on one platform may introduce bugs for another platform
- A Cordova app for a single platform generally takes 1.5x – 2x as long to develop than a single native app
- No background processing on iOS – WebView execution is paused when apps are in the background, which makes them unsuitable for certain applications, such as app which are integrated with beacon technology
- Documentation to help developers build apps using OS APIs is out there, but difficult to find
- Fragmented WebView performance on Android – pre 4.4 has limited support for newer CSS features. However, this can be resolved by including Intel’s Crosswalk (https://crosswalk-project.org/) in your apps
- The current version of Cordova for iOS8 does not use the most up to date WebView (due to bugs in the WebView), which means poorer performance and less support for modern features
- Care should be taken around security, encryption, or proprietary calculations or business logic – these features should be built into the native part of the application, as the contents of the WebView are fairly easy to access
In theory, Cordova apps offer companies particular benefits, which offer an appealing way to develop across platforms. However, once you look deeper, there are factors that need to be taken into consideration to ensure that stakeholders have a thorough understanding of the compromises that are characteristic of hybrid solutions. If these don’t impact what you need the app to achieve or the value for your end user, then a cross platform could be the solution for you. If in fact the compromises begin to devalue your mobile app, then a native development approach would be more inline with your overall business strategy.