Today, any startup that wishes to market its product quickly and to the largest possible audience, requires an app on a smartphone platform like iOS or Android. Most companies also try to publish a web-app that can be conveniently accessed from the desktop or from a mobile browser on a platform that isn't natively supported. In such cases, developing an app and then rewriting it for each platform can prove to be quite time consuming and expensive.
One alternative that developers have is to write an app using web standards like HTML5, and then create a native wrapper around it and deploy it to multiple platforms. These are essentially web pages without the browser chrome to give a native 'feel'. Users don't need to download any app as they can access it via the URL and updating an app is easy and instantaneous. While this ensures speed of deployment and a fair amount of consistency across platforms, one major disadvantage is that these apps can't leverage the underlying strengths of each mobile OS. They usually will not have access to some platform-specific APIs, or will not be able to access hardware components like the phone's camera or the GPS radio. This puts them at a huge disadvantage compared to native apps which not only perform better but also provide a greater set of features and a highly consistent and integrated user experience. Furthermore, most apps (with notable exceptions of those built using HTML5) require an internet connection and are not available offline.
On the downside, while attempting to reach out to as wide an audience as possible, you end up having to cater to the lowest common denominator, which can limit your apps functionality. Code written on a cross platform engine might not run as fast or as efficiently as native code, and may have issues in trying to access advanced functions like high-enf 3D graphics. Design considerations are very important in this scenario, for each platform has its own set of design conventions and approved practices. For e.g., the navigation controls on an Android app are usually on the top bar, but this convention is reversed for an iPhone app. (The official Twitter / Facebook / Foursquare app are an example). These design considerations are paramount and must be adhered to – one cannot simply make an app that looks identical on all platforms.
The two development approaches discussed here are not mutually exclusive, one can adopt a mixed or 'hybrid' approach by designing thr app using tools like CSS and then controlling access to low-level APIs and hardware with native code. The hyrbird approach is one which works best in the long run, giving developers (and their organizations) a compromise between speed of deployment, features, cost, and performance across a large number of devices at once.
Image Credit: Mindfire solutions