Today, when we start to build mobile applications, we start to think about what technologies to use. Often, we start wondering if we should write a native application or some other hybrid, for example. Those two approaches were the most popular for a long period of time. With the first (native) approach we build a native application for each platform (iOS, Android, and so on), and with the second (hybrid) one, we can write an application by using web technologies (like HTML, CSS, and JavaScript) and wrapping the app inside of a container WebView using a tool such as Adobe PhoneGap. To be honest, each option has its pros and cons.

I will focus my further considerations only on the two most popular platforms: iOS and Android.

Native application

Nobody needs to be convinced that native applications seem faster and more responsive than a hybrid. They look and feel consistent with their platform. But, on the other hand, we know that this comes at a cost. Native technology stacks are completely different for Android and iOS. For example, if you try to develop a native application for iOS, you probably do it on Swift or Objective-C. Android applications are often written in Java, less often in Kotlin or Scala. So, you can’t use the same codebase for each platform and you must write the same logic for each one. Additionally, the environment, where you write your code is completely different (Xcode and Android Studio).

Skills required:

Java or Kotlin on Android

Swift or Objective-C on iOS

Good knowledge of native tools like Xcode or Android Studio

Good knowledge of native architectures

Pros:

Good support from Apple and Google

Faster access to new features and native APIs

Native UI

More responsive and faster app

Cons:

Higher costs because you have to keep two development team

One codebase and higher probability of mistakes made by developers who often create the same logic for different platforms

More skills and knowledge about tools and architectures required from native developers than hybrid

Hybrid application

Hybrid applications are a very popular alternative, especially for frontend developers. Hybrid apps are easier to scale because we have only one codebase written in JavaScript. Using front-end technology to build mobile applications gives you the opportunity to use the skills of your fronted developers with basic knowledge about mobile architectures. If you want to do some native action, usually native plugin is already available and gives you the option to use it from pure JavaScript. However, achieving the same level of responsiveness and gesture support as a native app can be a daunting task. The majority of hybrid frameworks are based on the Cordova engine, the most popular ones include PhoneGap, Ionic, IBM Mobile First and many others.

Skills required:

Front-end skills (HTML, CSS, JavaScript)

Basic knowledge of native tools (Xcode, Android Studio)

Pros:

Possibility to use your front-end skills to build mobile app

Relatively small knowledge about mobile architectures and knowing native APIs

One codebase and usually one developer team

Lower costs

Cons:

Usually worse performance than native application

Non-native UI

Problem with responsiveness and gesture support

Summary

So when should we choose hybrid applications? Certainly, when we want to create an application demo, our team consists mainly of front-end developers, we have a small budget, or just create a prototype. If, however, we want very high-quality application and the costs are not important, then you should consider the native approach.

In the next parts of this article, I will try to compare hybrid frameworks and other modern approaches to building applications.

Follow to not miss! 🚀