Monthly Archives: March 2012

What's a "Hybrid" app versus a "Native" app?

Pluralsight published my new course on using HTML5 to build mobile applications the other day: http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=native-mobile-apps-with-html5

A subscriber on Twitter questioned the title :) He thought it should have the term “Hybrid” in the title.  After doing some google research – I decided he was correct – it is clear that from a “marketing” point-of-view a native app that uses HTML5 through a native component (UIWebView in the case of iOS, WebView in the case of Android, and the WebBrowser control in the case of Windows Phone 7) are commonly called “Hybrid” apps.  So we changed the title of the course :)

From a technical point-of-view I find the term to be slightly misleading.  Here is my definition of a “native” mobile application:  A mobile application that can be deployed to the mobile device’s AppStore/Marketplace.

Delineating an app on any other technical basis I think confuses the issue more than clarifies it.

Here is another way I think about it – with Windows 8 moving to Metro apps that can be built in HTML5/JavaScript – are those apps going to be “Hybrid” Metro apps?   I think not.

My new course is up on Pluralsight!

If you’ve been wondering where I am been – I’ve been putting down my thoughts about HTML5 development with native mobile apps – and its now live at Pluralsight!

http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=native-mobile-apps-with-html5

If you want to try it out you can start a 10-day Free Trial – https://www.pluralsight-training.net/microsoft/Subscribe/Step1?isTrial=True

In this course I cover the three “major” mobile platforms and how to build a native application on each of the platforms while re-using much of your UI and business layers by writing them in HTML5 and JavaScript.

I also cover responsive web design (media queries) and how that applies to mobile HTML5 development.

I also cover cool things like enabling the web inspector in the UIWebView by using the _enableRemoteInspector call.

So please check it out :)