I have long been fascinated by cross-platform mobile native development. I will not re-hash the argument for and against mobile development using native technologies versus HTML5-centric technologies (including Cordova); these have been well-articulated by many others. I will say that when user experience and design matters, I am firmly a fan of native development.
While developing the IBM Cognos Mobile client, which had to support multiple mobile platforms, one of the things we discovered is that it actually took fewer lines of code to develop native cross-platform applications, compared to using HTML5. We built both a web version of Cognos Mobile that supported multiple mobile devices, as well as multiple native versions of Cognos Mobile, so we were able to directly count lines of code and compare.
Why was this surprising result the case? Because we wanted a native-like experience on each smartphone and tablet, we had to write a lot of device-specific code regardless. It didn’t matter whether it was custom CSS and JS or platform-specific Objective C or C++: it turned out to be just as much work to implement a device-specific design using HTML5.
To be fair, this may not always be in the case. In particular, for Cognos Mobile:
- Cognos Mobile is a business intelligence application that has a lot of client-side code that was not related to the interface, and
- We developed in-house technology to translate non-UI code (like business logic) across mobile platforms, so we were able to re-use significant portions of the codebase.
So it matters (of course) on your application. I would imagine the situation is dramatically different for (say) a video game versus a simple forms application. It also matters if you are able to easily reuse native code between platforms. While we developed in-house technology at IBM, for most of us, this means re-using C/C++/Objective C code.
Regardless, what I learned from this experience is that when design matters, it’s probably less expensive than you think to stick with native approaches. And really, how else did you expect to get Super Monkey Ball? 😉