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