Thursday 8 March 2012

Native App or Web App for Mobile?

Ok so here's yet another web page on the Native App vs. HTML debate.
Too often I see people making snap decisions without a thorough analysis. So here's another of my blog posts where I attempt to cover all the various factors that should be considered when choosing between a native App or a web based mobile site.
This was written for organisations that don't want to spend the money or time to develop both mobile web apps and native apps. You can of course make both native app and a html web app or mix the two using hybrid approaches such as Phone Gap etc. You can also make dedicated web apps for dedicated platforms.

In the listing below I assume you or your organisations have some experience with web development and you are just considering a native app vs. a general web app. You already have a website designed for desktop.

When to go for a Native App
  • Users use the app many times a day and need a fast way to start or switch to the app.   
  • You have very high requirements on performance.
  • You have high requirements on usability.
  • Your app needs access to device specific hardware and API's such as notifications, calendar, volume controls etc.
  • You are willing to lose some users (unless you develop both html and native apps for iPhone, Android, Windows, Blackberry etc).
  • Your app doesn't need to or should not connect to the Internet.
  • You want to learn Objective-C or other native app programming languages.  
  • Your business model fits well with the monetization model of the App Store, Android market etc. It may be easier to make money off native apps (people tend to pay for apps because it is convenient. It requires close to zero effort to buy an App)   
  • You want yet another channel to be found. (e.g. App store) 
  • You want to use the App in marketing. (Apps are more cool. Few people talk about mobile web apps. People talk about Apps.)
  • You don't want the clutter that comes with a browser (such as the address and navigation bar).
  • Native Apps usually work better or feel more stable when the Internet connection is poor. (E.g. when you are on the subway)
  • You need to hide your code from other developers. (You can't rip html, js and css from a native app)
  • A native app is usually more secure. (Less data traffic. Less chance of phishing attacks and exposing sensitive information)
  • You have content you do not want to be copied or ripped.  
When to choose a HTML Web App
  • You need to push updates for the web app often and promptly (AppStore has a slow process)
  • You don't know who your users are and what devices they will be using.  
  • Your users are coming from random places on the web.
  • You provide links to other websites. (navigation will feel more natural not having to jump in and out of web and native apps)
  • You don't know who is going to maintain the app. (If someone else is going to further develop it there is a bigger change that you find the required competence if you go with HTML) 
  • You already have extensive web development knowledge.
  • You want custom design and branding. (On the web you can make it look however you like)
  • You want complete control of monetisation, including advertising.
  • You want to save time by reusing code between various web apps or projects and by reusing open source code and widgets such as sharing buttons, disqus etc.
  • You want the app to have a long life span. (You don't know what kind of devices and platforms will replace the current. You can be certain that the web will be around for many many years)   
  • You don't want to spend the money (time) to learn and invest in native apps development. 
  • There will be few users. (Little point investing in a new development environment if the App will have only 20 users)
  • A web app can more easily be used by the disabled (unless you develop a specialized native app targeted towards the disabled) 
  • You want better analytics.
  • Faster time to market. You don't have time to wait until you have the capability to develop a native app (it might require learning, developing server integration. A web app can often be made with very little effort and can naturally evolve if you have more time later or find that the web app gets popular).
  • You know that a considerable number of users might not have mobiles that support native apps but might have older web browsers on their phones.  
  • You want to support the development of the free open accessible non-proprietary web.
  • You don't like the political or socio-economic ramifications of walled gardens such as the App store. 
This blog post was written in March 2012. If you are reading this in the future chances are that Web Apps have caught up with Native Apps one many of the their strong points because of HTML5.