This post is from the Apperian blog and has not been updated since the original publish date.
Enterprise Mobile Apps: Native, HTML5, or Hybrid?
In developing enterprise mobile apps, the debate between native, HTML5, or a hybrid approach seems endless. There are advantages and disadvantages to each approach; the trick is to determine what is ideal for your use case before launching a costly development project.
Native - Single Platform
In native enterprise mobile apps, the developer builds an app for each operating system using a separate code base and platform-specific SDK’s and languages, e.g. iOS enterprise apps are built in Objective-C, Android enterprise apps in Java, and Windows Phone applications in .NET. There are many reasons to follow this route, not the least of which is performance. Large brands agree: Facebook's Mark Zuckerberg made a now famous statement at last year’s TechCrunch, which says it all: “The biggest mistake we've made as a company was betting on HTML5 over native”. He is right: the old version of the Facebook app was slow and painful to use. Native enterprise apps are excellent in providing a rich user experience and rendering high quality animation and graphics (good for games), and they react 10-15% faster than HTML5 apps. Also important for enterprises is the fact that native apps are better for security; cached data cannot be secured or encrypted in HTML5, and HTML5 code is much easier to access and corrupt. Opponents say it is too costly to go native because there is a separate development process, code base and skill set needed for each platform, and programmers are harder to find and more expensive. This is true, however it is only necessary to cover two platforms. According to IDC, iOS and Android together cover 85% of the smartphone market, and if your enterprise supports the bring your own device (BYOD) movement, consumers favor iOS and Android.
Native - Cross-Platform
Another alternative to a "single platform" approach is to use a cross-platform tool that creates native apps, such as Xamarin Studio, Appcelerator Titanium, or Embarcardero FireMonkey. This provides many of the benefits of a single platform approach, but with the ability to "press a button" and repurpose your app to different devices and OSs. If there is any downside to this approach, it it that you may end up with a somewhat more generic user interface. Unlike the single-platform approach, you may not have the fine-grained control over all user interface bells and whistles such as buttons, labels, menus, or have access to device-specific effects available for an iPad. But the benefits of having a single, maintainable code base, as well as the option to create device-specific UI libraries (if you wish) make this a very attractive option.
HTML5 is a language that enables developers to create rich web-based apps that run on any device via the web browser; developers can “write once, run everywhere”. This is a lower-cost option, as HTML5 programmers are easier to find, often at a lower rate. A mobile enterprise may need to create a large number of different apps to support a myriad of varying departments and functional tasks, which makes HTML5 more attractive economically. Proponents of HTML5 believe that the quality is comparable to that of a native app. In addition, it is easier to monetize and make changes to your app because you are not going through an app store. Arguments against HTML5 include performance, inconvenience of going to a URL instead of downloading an app, and lack of browser compatibility (not all mobile browsers support the same subset of features).
Ultimately, if your enterprise mobile apps require access to device-specific features or superior reaction time needed for games or frame-rate optimized apps (video), then native is your best bet. If you are cost-constrained and need to develop many apps for many platforms, or need to do rapid prototyping prior to developing the full-featured app (typical with an ad agency), choose HTML5. If you are somewhere between the two, well then go hybrid.