A Native App is an app written for a specific platform like iOS or Android—in other words, the app is written in the coding language used for development on that specific platform (Objective-C for iOS and Java for Android).
When you build a Native App, you get access to all the hardware features exposed by the native code APIs and SDKs. For example, Apple iOS Push Notifications are one example of a feature that cannot be supported by an HTML5 App.
The graphics and user interface of a Native App are far superior to any Hybrid or HTML5 app. You would choose this option, if you want to use the user interface components from Apple’s proprietary user interface libraries (i.e., the usability is better); you want full device hardware access—cameras, microphone, and geo-location; you want peak performance with no lag; you want users to be able to access the app off-line (i.e., without Internet access); you want access to push notifications and in-app purchase; and you want your app to de discoverable in the app store.
On the downside, your code is less portable across operating systems and it is often the most expensive development option. It is our recommendation that if you plan to start a true, revenue generating, app-based business, this is the only viable option.
Because it is running in a browser, it is confined to what is possible within that browser. You would choose this option if you want to support multiple platforms with the same app/codebase; you want to deploy it on the web; you want the widest possible support across multiple device operating systems and manufacturers; and you want to be able to update your source files on your server and have them immediately deployed to all devices (i.e., removing the need for the app approval process).
On the downside, your app is not discoverable in the app stores; it will never look and feel like a true mobile app; and you will have limited access to some of the software and hardware functionality of the phone (e.g., push notifications and cameras).
It is our recommendation, that this option is only viable for view-only content where users are not expected to interact in any meaningful way.
A Hybrid App is a form of web app that is deployed to a native platform like an iPhone or Android phone inside a native shell. It draws upon the best of both worlds to give you all your web functionality, supported with native phone capabilities.
The app uses web browser capabilities when required to display the HTML5 content, and some other hooks to allow your web app to potentially access some more hardware features that are not available inside a typical mobile web browser—e.g., push notification and in-app purchases.
It improves code portability because if you want to port your app to another platform, you only need a native shell on that other platform to run it, the HTML5 content of the app is directly portable. These tools allow a developer to push the app out to multiple platforms (e.g., iOS, Android, Windows Mobile) quickly by generating the shell and packages required to do so automatically.
You would choose this option if you want a balance between cost and usability; you want access to some (but not all) of the phone’s native APIs/SDKs and hardware; you want to be able to quickly deploy across multiple device types; and you’re not worried about high-end graphics.
The limitations of Hybrid apps is that your app will never be considered cutting edge technology. It is designed to provide a cost-effective, and less complicated, method for app creation; your website should provide the majority of key functionality for your app.