Hybrid Apps vs Native Apps: A Comprehensive Guide
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 apps 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!
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.
With all of this being said, the question remains: which is better, native apps or hybrid apps? There isn’t a simple yes or no answer to this question – it depends on the organization and the goals you are trying to achieve. However, there are a few points you can consider to help you decide which is right for your business.
Hybrid vs. Native Apps
Development Costs
With native apps, you need to develop the app for each platform. When you go with a hybrid framework, you have one codebase that works across multiple platforms. Since you are only developing one app for every platform, it is going to reduce the development costs. If your organization is working on a tight budget and you need to reach users on both iOS and Android right from the start, this can make hybrid apps a more attractive option.
Time to Market
With one development process, hybrid apps can get to market faster than native apps. You could cut the time to market for a native app by having two teams working in parallel on apps for the different platforms. However, that isn’t going to reduce the number of working hours that go into development. If you need to get apps out for both iOS and Android in a short deadline, a hybrid app might be the better option.
Performance
Native apps are built for the platform and hybrid apps use middleware to adapt code for different platforms. Since native apps are built for the ecosystem, they tend to perform better. Hybrid apps can have issues with being laggy or glitchy. Users will notice the performance issues and it might cause some dissatisfaction. If you are looking to deliver the best user experience possible, a native app is the way to go.
Functionality
While hybrid apps do have the ability to connect with many of the phone services and features, they don’t always interact with them as well or as efficiently as native apps. Developers may even need to use or build specific plugins in order to offer some features that would be natural for a native app. Hybrid apps also still rely on an internet connection for many of their functions. Without a connection, the user might experience limited functionality with a hybrid app.
Maintenance
Hybrid apps are usually easier to maintain. With one codebase for all platforms, you make the updates once and they are there for the user no matter what device they are using. With a native app, each version needs to be updated individually. This makes the maintenance of hybrid apps simpler and more cost-effective. With that said, you might need to spend more time updating and tweaking a hybrid app. Otherwise, you will get more complaints about performance and functionality.
The Bottom Line
Both approaches have advantages and disadvantages. In general, you will always be able to build a better overall app by choosing native. Hybrid apps have their place, however. They are more cost-effective, they can be on the market faster, and the unified codebase will make them simpler to maintain.
Bobby Gill