Hybrid or Native App: Which is Better?


Hybrid or Native App: Which is Better?

Before starting I would like you to see the following image and deduce which application is hybrid and which is native:

(at the end I will give you the answer)

Making a native or hybrid application has always been a matter of controversy since HTML5 became mature enough to almost match the functionality of a native application. Why? Well, because native mobile development is difficult.
Platzi has courses for native development on iOS and Android with Java or with Kotlin, React Native and Xamarin or also hybrid with Electron and more.
Before we know what works best in each case, let's clarify a few things.

Hybrid is not developing in a different language

One of the biggest confusions that exist at the moment to develop on mobile is to think that if we do not use Swift or Java (the official languages ​​of iOS and Android) it is a hybrid development, but it is not. The biggest difference between a native and a hybrid application is not how they are scheduled, but how they are run for the end-user.
If they require something additional to run like a browser or a container, they are hybrid. This is the case of Apache Cordova, Ionic and Unity. If they run directly on the OS, they are native, just like ReactNative, NativeScript and Xamarin do.

Even hybrid development is not unique to the mobile ecosystem. There are hybrid desktop apps that you use frequently like WhatsApp, Visual Studio Code, Brave, Github, Slack. How you will notice are very good applications and complex enough to think otherwise.

The rejection of hybrid applications

We are no longer in 2011, so saying that a hybrid application or made natively with other languages ​​will have performance problems is no longer entirely true.
This perception was taken because the first iterations of Phonegap gave us very bad products in the app stores, but the tools have already matured enough to match almost any native application.
Take for example Ionic, which despite being hybrid, its components are designed to respect the guidelines of each operating system. In addition, the connection to hardware is very wide.
Screenshot 2017-08-04 15.42.15.png
By the way, using another language does not mean that it will be a hybrid application. The React Native and Xamarin case run natively thanks to something called Bridge. Therefore performance is not affected.

User experience vs Development Experience

Talking about the experience that we are going to deliver to the users against the way that we are going to develop the product is the only factor that should matter.
I think you are still afraid and think that something that facilitates development on mobile phones by default is bad. However, cross-platform development has something that the native does not have: being able to share learning between platforms.
If you are a web developer, this is the best time to make your jump to mobiles using everything you learned with either React Native or Ionic. If you like Microsoft technologies, C # now allows you to reach iOS and Android mobiles thanks to Xamarin.
Perhaps, there are cases in which there is no other option than to use native development and official languages since it is the only way to access things at a very low level and the latest APIs of the operating system. But at the level of performance or the perception of users who will be using your application, they will notice very little difference against something native or created using some other language. If this is not your case, give other options the opportunity.
Facebook, Instagram, Airbnb, Uber Eats, are just some of the applications that millions of users use every day and were created using JavaScript as a language and React Native as a library.
The games you love to play on your phone arose thanks to the ease that Unity has for using a single code base and delivering it to almost any OS and I assure you that it does not bother you that it is hybrid.
In the end, the limitations of using one option or another will depend a lot on how many users and functionalities your application is gaining.
IMG_2776-85ac17b0-adf9-432a-9cd8-10695bfd181a.png
You don't have to carry something from the start, changing is fine. For example, spoiler alert, at Platzi we decided to migrate the application from native with Swift and Java to React Native. This allows us to have the talent of the team that React uses daily on the web in the mobile application, and this translates to our Platzinautas having the same functions at the same time, no matter what OS they use. And having a single code base makes development easier.
The most important thing is the Indian, not the arrow. Choosing native does not mean that it will automatically be better or that using any other platform will not end in a quality product, currently, we can find good and bad examples of both hybrid and native applications.

Hybrid or Native App: Which is Better?

Hybrid or Native App: Which is Better?


Hybrid or Native App: Which is Better?

Before starting I would like you to see the following image and deduce which application is hybrid and which is native:

(at the end I will give you the answer)

Making a native or hybrid application has always been a matter of controversy since HTML5 became mature enough to almost match the functionality of a native application. Why? Well, because native mobile development is difficult.
Platzi has courses for native development on iOS and Android with Java or with Kotlin, React Native and Xamarin or also hybrid with Electron and more.
Before we know what works best in each case, let's clarify a few things.

Hybrid is not developing in a different language

One of the biggest confusions that exist at the moment to develop on mobile is to think that if we do not use Swift or Java (the official languages ​​of iOS and Android) it is a hybrid development, but it is not. The biggest difference between a native and a hybrid application is not how they are scheduled, but how they are run for the end-user.
If they require something additional to run like a browser or a container, they are hybrid. This is the case of Apache Cordova, Ionic and Unity. If they run directly on the OS, they are native, just like ReactNative, NativeScript and Xamarin do.

Even hybrid development is not unique to the mobile ecosystem. There are hybrid desktop apps that you use frequently like WhatsApp, Visual Studio Code, Brave, Github, Slack. How you will notice are very good applications and complex enough to think otherwise.

The rejection of hybrid applications

We are no longer in 2011, so saying that a hybrid application or made natively with other languages ​​will have performance problems is no longer entirely true.
This perception was taken because the first iterations of Phonegap gave us very bad products in the app stores, but the tools have already matured enough to match almost any native application.
Take for example Ionic, which despite being hybrid, its components are designed to respect the guidelines of each operating system. In addition, the connection to hardware is very wide.
Screenshot 2017-08-04 15.42.15.png
By the way, using another language does not mean that it will be a hybrid application. The React Native and Xamarin case run natively thanks to something called Bridge. Therefore performance is not affected.

User experience vs Development Experience

Talking about the experience that we are going to deliver to the users against the way that we are going to develop the product is the only factor that should matter.
I think you are still afraid and think that something that facilitates development on mobile phones by default is bad. However, cross-platform development has something that the native does not have: being able to share learning between platforms.
If you are a web developer, this is the best time to make your jump to mobiles using everything you learned with either React Native or Ionic. If you like Microsoft technologies, C # now allows you to reach iOS and Android mobiles thanks to Xamarin.
Perhaps, there are cases in which there is no other option than to use native development and official languages since it is the only way to access things at a very low level and the latest APIs of the operating system. But at the level of performance or the perception of users who will be using your application, they will notice very little difference against something native or created using some other language. If this is not your case, give other options the opportunity.
Facebook, Instagram, Airbnb, Uber Eats, are just some of the applications that millions of users use every day and were created using JavaScript as a language and React Native as a library.
The games you love to play on your phone arose thanks to the ease that Unity has for using a single code base and delivering it to almost any OS and I assure you that it does not bother you that it is hybrid.
In the end, the limitations of using one option or another will depend a lot on how many users and functionalities your application is gaining.
IMG_2776-85ac17b0-adf9-432a-9cd8-10695bfd181a.png
You don't have to carry something from the start, changing is fine. For example, spoiler alert, at Platzi we decided to migrate the application from native with Swift and Java to React Native. This allows us to have the talent of the team that React uses daily on the web in the mobile application, and this translates to our Platzinautas having the same functions at the same time, no matter what OS they use. And having a single code base makes development easier.
The most important thing is the Indian, not the arrow. Choosing native does not mean that it will automatically be better or that using any other platform will not end in a quality product, currently, we can find good and bad examples of both hybrid and native applications.

No comments