With the emerging of packaging tools or hybrid app containers such as PhoneGap, a decision has to be made by all companies seeking to develop mobile apps – Hybrid or Native.
On the other hand, native apps refer to application developed with platform specific SDKs and languages such as Apple’s Object C, Android’s Google API, etc.
Pros and Cons
One code base can be packaged to multiple platforms, including iOS, Android, Windows Phone 8. Note that WP7 does not support HTML5 so this approach won’t work on it.
- Utilizing popular web technologies to develop
- Less development effort needed
- Less support effort needed
- No access to the full device APIs and sensors, but most of them
- Performance not as good as a native app
- Access to all the device APIs and sensors
- Maximized performance
Need to develop a separate set of codes for each platform:
- Knowledge on platform specific language and tools
- More development efforts
- More support efforts
Hybrid always wins?
From this comparison, it appears using hybrid approach is always the right approach, unless the app to be developed relies heavily on performance such as a graphic game. However, just like everything else in the universe. There are trade-offs. The extra flexibility and reusability are at the cost of efficiency and effectiveness:
Each platform has its own user experience guidelines as the best practice to develop a platform-specific user experience, and users are used to them. Hybrid apps have a unified appearance and work flow across all platforms which would sometimes frustrate users who are not familiar with the user interface presented.
Below are a few styling differences:
- iOS has its smooth and detail-oriented built-in animations.
- Windows phone has its large font and menu.
- Android allows sharing application data with every app installed on the same device.
To list a few work flow differences:
- iOS uses on-screen touch buttons to go back whereas Android and Windows phone are using on-device back button.
- Windows phone apps utilize horizontal tabs a lot. When a tab is clicked the page will horizontally scrolls to the page. But iOS and Android do not use this UI element.
Each platform has its unique feature which can’t be utilized through hybrid apps. For example:
- Android has widgets.
- WP has live tiles.
Performance seems to be not that critical for most of the people, since the hardware has become more and more powerful each day. However, debugging could be a nightmare for hybrid developers – what if an error is caused by the codes generated by the packaging software? Without advanced debugging tool provided for native apps and the knowledge of how the packaging tool works will certainly turn a trivial error into a huge road block.
There are many factors to be considered when making the decision – flexibility, time to market, cost, performance, etc. There is not a one size fits all solution to it. However, if enough resources are available, I will go for native app for sure. An optimized user experience is a must for an app to be successful. Otherwise, using hybrid is an alternative which can provide a minimized time to market and cost and maximized flexibility and reach.