Table of Contents

  • Available Options

  • A Closer Look

  • Architectures

  • Comparison

  • What should you choose ?

Available Options

Use Native


Use Compiled


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



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


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.


React Native
Alexander Kotliarskyi - React Native: Under the Hood



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).



React Native

Hello World Example


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

  • 90

More from Michal Danco