There has been an awful lot written on this subject and opinions tend to be black-and-white to grab headlines. The real answer to this question is a shade of gray and you have to be both realistic and pragmatic when making a decision. Here are the most important questions to consider when deciding between native and HTML5 app development:
What is the upside of native?
Native apps perform and react faster (typically 10-15%) than HTML5. If you need to write a slick, glitzy consumer-focused app and the future of your company depends on it, then native is the better option.
What is the downside of native?
Cost and complexity. Finding a good quality Xcode or Java developer is not easy. The good ones cost a lot and if you outsource it, as most will have to, it will cost even more.
The chances are that you will have to develop for both iOS and Android and possibly other platforms, too. Each platform you need to support adds to your cost (and don't forget to factor in the maintenance, too).
What is the upside of HTML5?
You develop once and can then deploy to all HTML5-compliant devices, including the desktop. For cost reasons alone, this is a huge advantage especially if you need to build several apps. HTML5 development is also easier to learn.
What is the downside of HTML5?
HTML5 on a mobile device is slower, but it is not slow. Ask yourself - do all your apps absolutely demand blazing speed? The glitzy ones do but many others certainly do not, especially B2B apps.
If you look closely, you can tell that HTML5 apps are not native apps. For some people this matters and for others it does not. So, do your apps absolutely need to look native?
Take a look and judge for yourself. Here are native and HTML5 apps side-by-side. Can you tell the difference?
What about B2B apps?
Until now, the majority of apps were created for consumers but now the enterprise has begun to see the potential for apps to unlock corporate data hidden away in databases and web services and get it onto the smartphones of employees, partners and B2B customers. We see this in our business; the most dramatic growth is in the creation of non-consumer apps.
B2B apps usually do not need to be as sexy and glitzy as consumer apps but they do need to be created quickly. In the enterprise world, developers need to build and deploy cross-platform apps in weeks, not months. And usually, content is more important than cosmetic perfection.
In these situations, native is a real problem. You have to support two or three mobile platforms and very often the desktop as well. How many companies can afford to churn out lots of apps on two, three or four platforms? This is where HTML5 becomes an invaluable tool.
Selecting the right HTML5 platform
Even HTML5 development can be complex so choosing the right approach for available skills and budgets is important. You will find that there are different products available for different skill levels. For novice to intermediate developers and for rapid prototyping, Application Craft offers a cloud-based environment with a drag-and-drop WYSIWYG and a large library of open-source widgets. For more skilled developers with more development time, there are frameworks like Sencha and Appcelerator with which you can custom pick HTML5 tools and components.
Creating binary apps
If you plan to distribute your app via any of the app stores, you will need to compile your app into binaries. This can be a complicated and time-consuming process. PhoneGap offers a solution and makes that process simple. Choose a platform that has that has fully integrated the PhoneGap technology.
One thing I have seen many times with first time mobile (and desktop) development projects is that a developer's first project is large and complex and of course, was needed yesterday. You are guaranteed to make mistakes, so start with the smallest possible project and learn about the relative merits of native vs HTML5 development on the cheap.
You can keep yours costs to a minimum by building your app right the first time. Building it right means creating the optimal user experience right before you start any serious coding. Build the entire UI along with navigation so you can test the look and feel of your app as early as possible. Many desktop applications are rejected or rated poorly because users find them unusable. With mobile, the problem is even worse due to the small screen sizes.
There are developers who have reasonable or good design skills – about as many who can write Assembly code. To some extent you can get away with poor UI/UX design on the desktop, but try to do this on a smartphone and you are asking for trouble. So, I recommend that you pull in someone who least understands the importance of UX and will help avert real shockers. If you are building a native app for sensitive consumer users, then get a real UI/UX professional to review your navigation and architecture.
Don’t force HTML5 to behave like native
Having accepted that HTML5 does not always perform like native, it is important to accomodate the difference in your design. Native is better at scrolling large lists, transition effects (especially with Android) and animations. So, if these things matter to you then choose the native route. But if you can’t afford to go native then just accept it and avoid these things in your HTML5 apps. With many B2B apps, the content is king and not the window dressing, so don’t worry, just avoid adding the features that slow your app down.
HTML5 and smartphones are getting more powerful
If you look back three years, building an HTML5 app was not a good option for anything but apps with very basic content. Today, the gap between native and HTML5 has narrowed and HTML5 apps work extremely well (although a bit slower than native as noted above). Fast forward a year or three and the gap will be even narrower. Yes, native will still be better but not by much.
If you have a single consumer app and it is critical to the future of your business, then native is the better choice. In fact, if you have unlimited or very generous budgets then you can always consider native as being maybe 10-15% better.
The more your needs shift towards the B2B end of the scale and the more pragmatic you must be in developing your apps, the more HTML5 becomes the better option. This is especially true if your budget is tight; you need to support more than one mobile device or desktop; and/or you need to build more than one app.