Flutter

https://flutter.io/

https://github.com/flutter/flutter

Flutter with high performance compare with React Native and Native

Compiles to Native Code

No reliance on OEM widgets

No bridge needed

Structural Repainting

https://medium.com/@nhancv/why-i-move-to-flutter-34c4005b96ef

Native apps (Java/Swift)

How native Android/iOS code interacts with the platform

../../_images/mobile_native.png

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, bu t you pretty much have to create separate apps for each platform because the widgets are different, not to mention the native languages.

React Native apps (Javascript)

How React Native interacts with the platform

../../_images/mobile_react.png

React Native is very popular (and deserves to be), but because the JavaScript realm accesses the OEM widgets in the native realm, it has to go through the bridge for those as well. Widgets are typically accessed quite frequently (up to 60 times a second during animations, transitions, or when the user “swipes” something on the screen with their finger) so this can cause performance problems. As one article about React Native puts it:

Here lies one of the main keys to understanding React Native performance. Each realm by itself is blazingly fast. The performance bottleneck often occurs when we move from one realm to the other. In order to architect performance React Native apps, we must keep passes over the bridge to a minimum.

Flutter apps (Dart)

How Flutter interacts with the platform

../../_images/mobile_flutter.png

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. This allows Flutter to communicate with the platform without going through a JavaScript bridge that does a context switch.

Flutter has a new architecture that includes widgets that look and feel good, are fast, and are customizable and extensible. That’s right, Flutter does not use the OEM widgets (or DOM WebViews), it provides its own widgets.

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

https://hackernoon.com/why-native-app-developers-should-take-a-serious-look-at-flutter-e97361a1c073

Flutter SDK releases

https://docs.flutter.dev/development/tools/sdk/releases?tab=linux

Flutter release notes

https://docs.flutter.dev/development/tools/sdk/release-notes