Table of Contents
-
Available Options
-
A Closer Look
-
Architectures
-
Comparison
-
What should you choose ?
Available Options
Use Native
Languages
Use Compiled
App
No compilation setup needed, you write the app in the native language for the given platform.
You create an app that's compiled to native code (UI components are compiled).
A Closer Look
JavaScript
Dart
Not compiled to native code
Compiled to ARM C/C++ library
If you are using non-native solution, you need to be creative
Ships with some pre-built components
Ships with a lot of pre-built components
Material Design
Architectures
Java / Swift
Your app talks to the platform to create widgets, or access services like the camera. The widgets are rendered to a screen canvas, and events are passed back to the widgets. This is a simple architecture, but you pretty much have to create separate apps for each platform because the widgets are different, not to mention the native languages.
Architectures
React Native
https://www.youtube.com/watch?v=hDviGU-57lU&t=898 Alexander Kotliarskyi - React Native: Under the Hood
Architectures
Flutter
Flutter takes a different approach to avoiding performance problems caused by the need for a JavaScript bridge by using a compiled programming language, namely Dart. Dart is compiled “ahead of time” (AOT) into native code for multiple platforms. Flutter moves the widgets and the renderer from the platform into the app, which allows them to be customizable and extensible. All that Flutter requires of the platform is a canvas in which to render the widgets so they can appear on the device screen, and access to events (touches, timers, etc.) and services (location, camera). https://hackernoon.com/whats-revolutionary-about-flutter-946915b09514
Comparison
https://academind.com/learn/flutter/react-native-vs-flutter-vs-ionic-vs-nativescript-vs-pwa/
Comparison
React Native
Hello World Example
Flutter
Hello World Example
What should you choose ?
First of all, you have to decide whether you want to stick to the native languages (Swift, ObjectiveC, Java) and accept the disadvantage of learning two things and writing two apps. This is a lot of work and mastering two languages and platforms is way harder than mastering one.
If you don't want to use the native languages, you have to decide whether you want a wrapped-app solution as Ionic offers it. Whilst having the performance disadvantage you will get a super-fast development experience. You can use your web development know-how and build two apps with one tech stack in little time.
But if performance is super-important to you - or you need to access a lot of (advanced) native device features - you might want to take a look at React Native, Flutter.
Hotovo mobile meetup
By Michal Danco
Hotovo mobile meetup
React Native vs. Flutter
- 740