One of the tough decisions that we highlighted in our prior blog post about cross-platform mobile app development is whether to develop native apps or web apps using HTML5. This debate has been happening for a while and won’t end anytime soon.

A couple of years ago, Facebook CEO Mark Zuckerberg famously stated that betting on HTML5 was the company’s biggest mistake and made immediate improvements to their mobile apps when they concentrated on building them natively.

Then Sencha, a company that builds open-source HTML5 frameworks for app developers, defended the platform by remaking the Facebook mobile app using HTML5.

The Financial Times bypasses the Apple App Store by offering an HTML5 web app, but they also build native apps for Android and Windows 8 tablets and PCs.

And Google is making their mobile search look more like a mobile app.

So, as a business, what should you build – a HTML5 web app or a native app? The answer is: it depends, maybe both, and maybe a combination of both!

I know, that’s a total cop out, but it’s true. The decision depends on many factors; here are some questions to ask yourself before you embark on your app development journey.

What kind of content and features do you plan to deliver via your apps?

The user experience of native apps is superior to that of web apps, so if you’re looking to build a feature-rich app and optimize its performance (like Facebook), native is the way to go. Native apps typically have a more polished look and smoother navigation, and can maximize the software and hardware capabilities of smartphones, such as push notifications, GPS, the camera, and the accelerometer. Additionally, users can access features of a native app when they’re offline, which for the most part is impossible to do with web apps.

But if you want to build an app that focuses on broad content delivery (think news readers or sports score sites), an HTML5 web app may be the way to go, as content control is much easier.

How do you plan to monetize your apps?

If you plan on monetizing your app primarily via advertising, a web app may be the correct choice. Advertising is executed more easily on a web app (including newer ad placements like rich media or pre-roll ads) in part because companies can leverage existing online advertising systems with little effort.

If app purchases and in-app add-ons are your primary sources of revenue, the decision gets a little dicier. With a web app, you don’t have to deal with the app markets’ cut of revenue; with native, you are at the mercy of Google Play’s and the Apple App Store’s revenue share agreements (which is why the Financial Times chose a mobile web app for iOS).

But the process of making in-app purchases is much more seamless on a native app (many have one-click purchase methods), so you’ll have to find that balance.

What level of resources do you have to dedicate to build and maintain your apps?

If you’re a smaller company with limited resources, a web app may be a great choice. It’s much less costly to build and maintain a web app because you develop it with HTML5 and the app works on any operating system and device.

Additionally, you only have to update a web app once. For native apps, you may have to update apps for every platform on which you build and may have multiple versions of your app on each platform, potentially causing problems for users who haven’t upgraded to the latest version.

Finally, if you’ve developed your online website with HTML5, it’s simple to extend that to your mobile web app.

For native apps, you have to develop for all platforms and for different device sizes almost independently, and your mobile development team will need a broad programming skillset (you’ll typically need Objective-C or Swift developers for iOS and Java developers for Android).

There are platforms like Appcelerator Titanium that allow you to develop a single code base and port it to multiple mobile operating systems, but these don’t always translate to each operating system perfectly.

How do you plan to market and distribute your app?

Native apps are easy for users to find and download to their smartphones, due to app consolidation in and powerful search functionality of app markets. But as more and more apps are built, it’s becoming increasingly difficult for a native app to stand out in the crowd.

If someone uses his or her smartphone to search in a broader context, a web app may be more easily found since these will appear in Google search results on the mobile browser and are immediately accessible.

Additionally, mobile app URLs can be easily shared through social media, email, and text messages to increase the app’s viral quotient.

Hybrid Approach

The hybrid app approach – using a combination of native and HTML5 development – may also be a viable alternative, as it combines many positives of each option into a single app. This entails building native apps accessible via the app markets but delivering a lot of the content within that app using HTML5 in an embedded WebView.

Phonegap is an open-source framework for developing these HTML5-based native apps and allows developers to access the native features of the smartphone, such as the camera, GPS, and contact list, using the Javascript programming language. However, more advanced technology is typically needed to give the app a native feel and less of a browser-like feel. It’s possible to proactively preload and cache new content on the smartphone’s local disk from a background thread, which allows these hybrid apps to render their HTML5 web pages immediately and replicate the speedy and smooth user interface of native apps.


There are many difficult decisions when it comes to developing a mobile app and with the technology advancing so rapidly, all of this might change. But if you understand the purpose of your app and ask the correct questions, you’ll be on your way to building a successful mobile app strategy.

Like this post? Please share it! Then follow us on Twitter – @thorntech – and sign up for our email list below for future updates.
[grwebform url=”″ css=”on” center=”off” center_margin=”200″/]