While working with many different clients – from start-ups to corporate businesses, I have learnt that choosing between a hybrid and a native app is very often not an easy task. Which one should you select and why? As usually in these cases, there is no straight answer. It all depends on you – the client, your needs, time-scale and the budget you have. In the article below I will try to explain the difference between a hybrid and a native mobile app and help you decide which one is more appropriate for your project. Let’s start then – native vs hybrid app development.
First of all some stats:
- 79,4% of all mobile devices use Android
- 16,4% of all mobile devices use iOS
Source – Forbes.com
Therefore, those are the technologies I will focus on. As you can guess, both of them require a very individual approach.
Furthermore, as we explained in one of our previous articles mobile is already starting to dominate desktop. Developers will have to be ready to not only work with smartphones and tablets, but also with various wearables, smart devices etc. Multi-platform development brings many challenges, but also allows us to create even more impressive products. It makes the decision between a hybrid and a native app even harder. Let’s take a look at what those terms really mean.
Native apps are smartphone and tablet applications developed precisely for a specific mobile operating system. For iOS we usually use Swift and for Android we use Java or Kotlin (trending solution right now).
Below the main pros of native apps
Great performance – native apps are developed specifically for a given operational system (according to its guidelines), so they are faster and more refined than their hybrid counterparts, making them a perfect match for high-performance applications and games
Better UX – both Android and iOS apps have some individual characteristics, which feel natural for their users. What does it mean? Long-time Android users probably won’t have any problems with finding their way around the app which follows platform specific UI standards – just like other apps they already use (navigating, interface etc.). Same goes for iOS.
Easier access to built-in capabilities – native apps have no problem tapping into all the device’s functionalities, such as: camera, microphone, calendar, GPS etc. while hybrid apps grant only a limited access to them.
The audience – native apps can be discovered more easily by users in the App Store (obviously apps with better UX get featured more frequently), therefore reaching your potential clients might be easier.
Internet connection is not always a must – depending on the functionality, native apps don’t necessarily require internet connection to work (when it comes to hybrid apps, it is usually a must)
Below a few examples of Native Apps we developed for our clients:
elGrocer – el Grocer is an Android and iPhone app which allows users to shop from grocery stores nearby in Dubai (by both “shopping by items” and “shopping by stores”) with no changes in price.
WonderWoof – Wonderwoof is a mobile Android app, integrated with WonderWoof BowTie device. It allows users to create personalized profiles for their dogs, track their activity (with badges as awards) and connect with other users.
EasyTalQ – Easy TalQ is a natively developed Android and iOS app that connects interpreters and their clients. The app allows people around the world to book interpretation services in any language for a specific time.
That being said, you have to remember that the new Android permission system(introduced to users with Android 6.0) requires additional service from the native code also when it comes to hybrid apps, so either your web programmer also knows Java or a “native programmer” will have to be involved in the development. For example, you will be prompted the first time the app requests access to your camera (in the older version access was granted during the installation). Similar issues are likely to happen in the future, so it is something you have to be ready for while going for the cross-platform option.
Let’s take a look the the pros of a hybrid app development:
The cost – the lowered cost of developing a hybrid app instead of a native application is one of the biggest pros of this solution. You don’t have to create two separate versions for Android and iOS, instead you get an app ready for both platforms (assuming you don’t care about getting a native-like interface)
Lower requirements – one language can be used on all available platforms (assuming you are using Cordova or PhoneGap wrapper). Xamarin might also be a very interesting alternative here. It basically gives you all platforms and, to some extent, a native look & feel, while only using one language – C# . There is no need to learn iOS or Android specific languages (assuming you know how to use PhoneGap or Xamarin).
Below a couple of hybrid Apps we developed for our clients:
fTrack Go – fTrack Go is a cross-platform project management app available both on Android and iOS. It allows users to track production process and time, involve clients in ongoing projects and much more.
Eduvee – Eduvee is the brainchild of engineering graduates who wanted to bring education into the digital age. Exposed to all kinds of new technology every day, they want to make it accessible to students and teachers alike to help support what is being taught in class.
Native vs Hybrid
Right now you should have a general idea of the qualities of both native and hybrid apps. When to choose which then? There are two main, deciding factors – available time and money. The hybrid app will save you a lot of both – one source code can be released in both Google Play and App Store and requires less time to develop. It sounds great, but as it usually is, a faster solution comes with a price. In this case it’s the user experience. As I said before, usually the UX of a native app will beat the hybrid app’s one. There are many other differences, so let’s now take a look at the cons of both solutions:
Native app cons:
Money – the cost of maintaining multiple code bases will be much higher than in the case of a single code base.
More developers – usually more developers will be needed, due to the specific knowledge required to develop for both platforms.
Hybrid app cons:
UX – A hybrid app will never give users a fully native experience. Native apps use system interface components which are well-known by users and also allow developers to create meaningful, descriptive transitions and transformations which help maintain the work flow. This cannot be achieved with a hybrid app without sacrificing performance. Better UX means engagement and in the end that’s what decides whether your user base will grow. Remember, users rarely give apps a second chance – first experience is crucial, so mediocre UX will simply put off your potential clients.
Lack of some native features – both Android and iOS have some features that are only available for their native apps. A good example is Render Script, computation engine that operates at the native level, allowing you to accelerate your app when it requires extensive computational power (it’s used in many photo rendering apps). After some time you can stumble upon a problem which was hard to foresee at the beginning and will end up as a road block due to the chosen technology.
Efficiency – hybrid apps are usually a lot slower and less refined than the native counterparts, so running high-performance apps and games can be a frustrating experience.
Design – even if the design is good, it still won’t have the native feeling, because you are trying to match one version to two platforms.
App Store approval – if your App Store experience is a rookie one do not be surprised the app submission may be a bumpy road and a seemingly trifle mistake can result in app rejection and lots of time lost if you are not careful and violate any of the App Store rules – some of the most common app rejection reasons can be found here. You can also check the average review time.
What’s the answer?
In my opinion, choosing whether to go native or hybrid should depend not only on your current need, but also on the future plans. Let me focus on two very popular scenarios:
1. You have a very simple app that will not really need any complex functionalities in the future (for example a cinema ticket booking app).
In this case, when there are no large functionality updates on the horizon, hybrid app may be a reasonable choice
2. You want to develop an MVP, but already have a list of extra features you’d like to add in the future
In this case, when the application is expected to be getting more functionalities based on the feedback from your early adopters, a native app is the way to go.
As you can see, there are situations when both hybrid and native apps can be a viable solution. Nevertheless, I am of an opinion that native is overall a better alternative, mainly because it gives you much wider options for post-MVP development.
There are a lot of interesting stories about companies switching from hybrid to native, for example Facebook.
Content Credit – How we do start ups
by Krzysztof Marszałek
Also contributed to the article:
Marcin Przepiórkowski – RST-IT Mobile Department Team Leader
Szymon Półtorak – RST-IT Frontend Department Team Leader
Adam Szeremeta – RST-IT iOS Developer