We recently started working on the idea of developing a mobile app for one of our clients, and we faced a familiar question: whether to go with a native or hybrid mobile app.
To help make the decision, we brainstormed the main requirements with our client and found them to be:
Based on what we heard from the client, we chose to develop a hybrid app. These were some of the main reasons we decided to go hybrid over native in this case:
Once we had chosen a hybrid app over other approaches, the question became: which framework or library will we use for hybrid app development? There are various frameworks available for this purpose like ReactNative, Ionic Framework, Cordova/Phonegap, and Xamarin, but we decided on Ionic.
Despite Ionic having so many positive features, we faced numerous challenges.
We have found a way around these various challenges. The solutions we found are not generic to issues like performance or scrolling, but they helped us to achieve almost everything that was required.
From a developer standpoint, Ionic is coming up with the new version, Ionic 2.0, that is based on AngularJS 2. So, its performance is expected to improve. It would also come with more inbuilt animation features and handle gestures more effectively so that manual handling becomes less of an issue.
From a client perspective, the expectation is that the hybrid app will essentially be a replica of a native app. If there are more hybrid apps available, then clients would have a better understanding of hybrid apps and their expectations and requirements.
From a testing perspective, there should be some documentation or write-ups that explain the limitations of hybrid apps. At times it becomes impossible for developers to help their QA teams understand that it’s the limitation of framework being used.
Recently Facebook has come up with an open source solution for building hybrid apps for Android and iOS that is not webview-based. The ease of use of ReactNative and ReactJS has garnered a positive response from the Hybrid App Developers community.
Fast to serve: If the client’s main requirement is to hit the market as soon as possible, hybrid apps are the way to go. There is a single code base for all platforms, so both the time and effort are reduced substantially.
Cost effective: Because of single code base, the same app works on different platforms, thus reducing the development and maintenance cost.
Limited native behavior requirement: If the client’s requirement is a not-very-complex app with limited requirements for native behavior, hybrid apps are the right choice. The Ionic framework has limitations for animations, gestures, and other features, so it should be chosen if the client requirement reflects that need. However, limited native behavior doesn’t mean we can’t have native functionalities in the hybrid app. Cordova provides plugins for almost all frequently used native features and they are at the developers’ disposal to integrate into their hybrid app. However, developers should always consider performance impact when using a plugin or creating a new plugin for that purpose.