What are hybrid apps?

By Bobby Gill on December 10, 2012 / 1 Comment

About 4 seconds after you decide you are going to build an app, you will face the classic Appster dilemma:

To build a native app or to build a mobile web app?

(If you think ‘native’ has anything to do with indigenous peoples of North America, you should read this article first)

If you go the native route, you benefit from building a ‘real’ app that lives and breathes right on the phone and has access to it’s GPS, camera, and file system. But native apps can only run on the platform you built it for, so if you wanted to migrate your native iPhone app to Android, you will need to start from scratch!

If you go mobile web, your app is essentially a web site formatted for a mobile screen. You code it once in HTML/Javascript/CSS, and voila, it runs on any phone with a modern browser. That’s the rub, it runs in a browser. It’s slow, doesn’t look or feel like an app, and requires an internet connection to work. Not to mention you don’t get access to the same capabilities of the phone that a native app can.

If you are beset by the choice, let me introduce you to the ‘hybrid app’.

Yup, in the spirit of all things compromise, a ‘hybrid app’ is the bastard child of the app world. You download and install these apps just like you would a native app, and they run locally on your phone as a native app. However, the app itself is written in a flavor of HTML/CSS/JavaScript much like a mobile web app, yet you still have the ability to access all of the phone’s functionality. Not to mention they can run on almost any platform!

Whaaaat? A native app written in HTML?! How can that be?

Well, it’s easy. A hybrid app allows you to have the platform independence of a mobile web app, without needing to be run in a browser and have an internet connection. A hybrid app works through the use of middle ware framework like PhoneGap or Trigger.io. These frameworks essentially hosts and runs app code written in HTML/CSS/Javascript within a generic native app container. This native app container exposes access to the phone’s camera, GPS,  and other hardware to app code it hosts through custom APIs that are accessible from Javascript.

Suddenly with a hybrid app, you can write the entire app in HTML/Javascript/CSS but still have it run locally as a native app and have access to all the functionality that native apps traditionally have a monopoly on. Plus, these apps can be run on any smartphone for which the middleware supports!

If it sounds too good to be true, it probably is.

Hybrid apps are no panacea.  An app written in HTML/Javascript will not be as performant as one written in a native framework, and it’s something people will notice. Do you remember the old Facebook app from earlier this year? Remember how it lagged when you pressed buttons and generally felt like it was written by rhesus monkey? Well that’s because it was a hybrid app. In fact, so many people complained about it that Facebook was ultimately forced to ditch its hybrid app framework in favor of natively written apps!

Furthermore, by using a middleware framework like PhoneGap or Trigger.io, you introduce a dependency between your app and a 3rd party vendor. If there is a bug in your app, you now need to ask yourself where is the bug? Is it in your app’s HTML/Javascript? Is it a bug in the PhoneGap framework or the operating system itself? Or is it an issue in how all 3 work together? Plus, there is far more documentation on building apps in Objective-C and JAVA than there ever will be for any of the 3rd party frameworks.

Get the latest from the Blue Label Labs’ blog in your inbox


* indicates required