illustration showing mobile phone

Native vs Hybrid app development – Make up your mind

There is a question that is very often asked in today’s development world – should we implement native applications or hybrid ones? The topic is not fresh so you can find a lot of feedback and advice to help in your decision. Unfortunately, the rapidly evolving mobile branch of IT forces us to constantly update our beliefs and opinions which is my task in this post. At the beginning I would like to emphasize that opinions expressed here should be treated as subjective. Nevertheless, I hope that they will be helpful in answering our uneasy question.

What’s the difference?

I’ll allow myself to introduce some basic information regarding native, hybrid and Web apps when it comes to mobile solutions. Let’s start with Web applications which weren’t included in the title and there is a reason for that.

Web apps

Responsive Web Design is the main factor that allows Web site owners think about smartphone users in a different way. Classic applications viewed in browsers are usually uncomfortable in usage when navigated from mobile device. User spends most of the time struggling with the pinch gesture with varying effect. These days it’s a must to provide companion theme that is mobile friendly, even Google made it a requirement for its page rank system. In order to create a mobilized version of Web site developers has unleash the power of HTML 5, CSS 3 and JavaScript. They also have to keep in mind that mobile means more than smartphones – tablets, phablets, e-book readers are also member of the family that come with variety of screen sizes, resolution and pixel densities. Twitter Bootstrap may be a tool simplifying that task however methods mentioned above are only means to take care of the UI and some basic functionality. It does not make any website a full-fledged application. Only a few device APIs are available to web browsers and it greatly limits developer’s possibilities. Monetization is another con in mobile world as developer cannot benefit from any app store. There are few methods to charge users for the services but it’s an uneasy task. I didn’t include Web apps in the title as I’ve put the main emphasis on the application aspect which simply means wide set of functionality.

Native apps

Native applications are developed using dedicated tools and language and are directed at specific mobile platform like iOS, Windows Phone/Windows or Android. It requires specific set of knowledge and skills to implement application for each of platform. This means C#/JavaScript for Windows solutions, objective C/Swift for iOS and Java for Android and these are only examples. When native development direction is taken it is assumed that best performance and app look will be achieved. App creators are also assured of being able to take full advantage of all the device features including GPS, camera, accelerometer etc. At the end we can add offline mode and platform’s notification system to the set of advantages.

Hybrid apps

It’s pretty safe to assume that hybrid app is a compromise between native and web technologies. As in the case of Web apps the main development emphasis is on usage of HTML, CSS and JavaScript. Native technologies support previous set with access to wider functionality of the device. There is an assumption that hybrid app development is faster and thus cheaper (than native) but I’ll come to that point later due to some controversies connected to this topic.

How to decide?

Of course there is no perfect answer that we can call a one-size-fits-all. The decision on how to implement mobile application is very important. I’ll try to summarize factors that have to be taken into account before starting development or even resources planning. If you’re not facing customer with your app, do not require access to device’s sensors or native functionality you can safely assume mobile Web app is all you need. Of course you have to accepts the fact that typing HTTP address is the only option to access your application as there are no app store options. I’ll focus on the native versus hybrid in the next part of the article.

User interface and experience

If you’re not planning a unique set of graphical interface and custom gestures that can be assumed the core of your application you have to respect each platform’s design guidelines if you expect nearly five star ratings in the stores. It’s not a secret that user ratings are very important and usually lead to the final question of “to be or not to be”. To achieve this goal developer shouldn’t confuse user with UX and visuals that differ from platform’s default behavior. It could lead to an assumption that application is unintuitive and uneasy to use. It is highly advised to become acquainted with design guidelines for planned platforms. Here are the most common:

When developing native apps it becomes natural to implement application with respect to required rules. Most platforms provide a ready set of controls that have specific behavior incorporated. In case of hybrid apps developers must rely either on their own CSS/JavaScript skills to cover each platforms native UX or controls and frameworks targeting mobile. Unfortunately I find these solutions incomplete as they tend to support only specific platforms, usually iOS and/or Android. Some stores like Apple’s require application to fulfill very strict set of rules during certification process. Using hybrid approach that does not respect guidelines appropriately may lead to rejection of application.

Device access and platform specific features

Native applications have full access to device specific features like GPS, accelerometer, camera, gestures, notifications, contacts, calendar, motion sensors etc. Way of implementation and visual aspect of those functionalities are generally the same in mobile operating system and other applications based on the same platform. Hybrid apps in contrast to Web ones gained access to device’s API. However this access generally comes at the price of stability and selective support of platforms. If your application targets many platforms and requires access to specific device feature you should perform extensive research and testing to assure reliable functioning.

Performance

First place in this competition is easily achieved by native apps. Due to direct and optimized access to OS’s and device’s functionality performance is at very good level. Only development mistakes could lead poor responsiveness of native application. This approach usually requires no additional work in case of speed improvement. Hybrid apps authors have a hard nut to crack assuring their applications to avoid being called sluggish. HTML, canvas and SVG does not provide smooth operation at satisfactory level and leave us with impression of slow or unstable. Developers has to spend additional resources to tweak Web based behavior to work well with touch events.

Code portability and reusability

This seems to be the main disadvantage of native approach. Each platform requires its own code base and the only shared part is the backend that lays behind a service like REST API. This of course lead to additional cost caused by hiring developer skilled in specific technology. Hybrid apps are better contesters in this match as most tools enable full portability of a single codebase between major mobile platforms.

Others

  • Monetization – Tools for developing native apps may come with some built-in store functionalities, but hybrid apps are still able to benefit from any store’s monetization system.
  • Maintenance – Another point for hybrid apps as maintaining such application is as simple as maintaining a Web site. Of course some issues found can be platform specific and developers have to assure fix won’t affect negatively any other version.
  • Offline functioning – Native apps comes with the best tools for operating offline with usage of local storage. Hybrid app must rely on in-browser caching available in HTML 5 or have faith in JavaScript API providing access to device’s storage.

Cost

If you ask me, this is the most controversial point of whole discussion. When you search the Internet you can get the impression that hybrid app is synonym to low cost of development. If decision between native and hybrid is taken mainly because of project budget, it can lead very unpleasant results. Resources and time put into the project cannot be planned only because someone thinks that portability and code reusability means less developers. We still have to keep in mind that we want to support more than one platform, which usually means as many different UX to support. Hybrid approach is still a young one and there are many areas which require improvement and developers have to come with devious workarounds to make application work in 100%. To make sure hybrid app development is less expensive developers have to conduct thorough research and testing. Planning any complex app is a risky step in case of hybrid app as it can leave us with some functionalities omitted on some platforms due to limited possibilities of tools for hybrid development. Native development may need more developers because of different technologies used but their number does not reduce proportionally with hybrid one.

Conclusion

I may be a bit harsh on hybrid approach but I will not give the final answer. Asking yourself questions related to points mentioned above should give you general input in decision making. For me it seems that large mobile applications with high level of complexity should be implemented using native technologies. Hybrid apps can be used for simpler content base applications which require to be built quickly. Existing Web site comes in handy for hybrid approach as some code is reusable.

Make up your mind and please choose wisely.

 

Author: Szymon Graczyk

back