Overview

It’s time to start developing your app! You might be considering whether a hybrid or a native app is best – the short answer is:

it depends.

Let’s explore the high-level details of each in an effort to point you in the right direction.

Although cross-platform and hybrid mobile apps are not exactly the same, they for the purpose of this discussion we will be grouping them together.

Roughly, cross-platform apps are developed using HTML and CSS and optimized for mobile and desktop devices whereas hybrid apps are created using a combination of web and native code to achieve an “almost native” look and feel. Native apps are exactly as they sound, applications that are written in the native language and style optimized for a specific platform.

Examples of Native app development:

  • Android (Java/Kotlin)
  • iOS (Objective-C/Swift)
  • Windows (C#/Java)
  • MacOS (Objective-C)

Examples of Hybrid & Cross-Platform development:

  • Ionic (JavaScript/TypeScript)
  • ReactNative (JavaScript)
  • ReactJS (JavaScript)
  • Angular (JavaScript/JavaScript)
  • Cordova (JavaScript)
  • Flutter (Dart)

Notice the programming language trend for cross-platform/hybrid…

When to AVOID cross-platform & hybrid

Performance

If raw performance and fluid rendering are absolutely necessary for your application, you may choose to avoid building your project with cross-platform/hybrid frameworks. In recent years non-native frameworks have been closing the performance gap between themselves and native apps, yet, there still exists a significant difference. In my opinion, ReactNative and Flutter are the highest performing non-native frameworks. 

The reason for lacking performance is simple: non-native apps need to use a type of “bridge” to access functionality specific to the target platform. Additionally, native rendering is really hard to compete with, the built-in mobile WebViews that are used by many non-native frameworks just cannot compete with the native rendering engines.

Platform APIs

In the case that your application or its core features revolve around platform-specific functionality, hybrid and cross-platforms can become challenging. Each platform has features that are exclusive, think about iOS; Apple Pay or the ability to insert a 2FA (2 Factor Authentication) code directly from a text message. Even something as simple as accessing contacts or the camera can be cumbersome, often requiring plugins or dependencies that leverage the “bridge” to access platform functionality. If these types of operations happen frequently, is the performance and development cost really worth it?

Single deployment or user-base

This one is simple. If you are not going to be publishing your application to users on multiple types of devices such as Android & iOS, then, you don’t really need a non-native solution. In this case, a native app might be a better choice. 

When you SHOULD use cross-platform & hybrid

Lean Development

Building prototype applications or working with a smaller budget. Quality software development is never cheap. It becomes even more expensive if you have to hire multiple teams to work on each platform for the SAME app! If you don’t have the desire to pay for multiple teams or learn to code for multiple platforms yourself, then, hybrid apps could be the way to go.

There is something to be said for having a single, unified codebase for your application. In many cases, this can lead to fewer repeat bugs and an increase in overall development time.

Rapid PoC and Prototyping

If your skillset or the skills of your developers are not tuned for native development. Using a non-native development solution has opened the floodgates to novice developers and those who prefer web apps and web technology.

With a framework like Ionic or ReactNative, someone who is familiar with HTML, JavaScript, or Angular can very quickly build a wonderful mobile app with a nearly non-existent learning curve.

“Simple” project

Your application is considered “relatively simple” from the perspective of platform-specific features. In the case that you’re working on a project like an app that reminds you when to water your plants; why would you want to get into the lower-level details of native development? Using an SDK like Flutter or framework like ReactNative is likely an easier approach. In my experience, the rapid development of mobile apps and a highly stylized UI is more pleasant when using web technologies like CSS and JavaScript.

Website AND an App?!

If your application needs to function as a website AND an app. Using the same code to serve a web app and mobile app is really fun! The concept of Progressive Web Apps (PWA) is becoming quite popular. In short, these are applications that run on the web and seamlessly adapt to mobile devices while implementing a unique content caching strategy to facilitate the stateful “app-y” feel of the project.

Wrapping up

In general, if you desire platform flexibility, web technology or have a “simple” application that doesn’t need blazing fast performance, then, you should begin to investigate further into specific hybrid/cross-platform frameworks. Interested in Flutter? Take a gander at our recent article to become familiar with the basics.