Since last a few years, cross-platform app development gained a lot of popularity, which allow us to develop mobile apps that can run on multiple platforms with a single code base. There are big cross platforms available to build apps like (React Native, PhoneGap, Appcelerator, Sencha, Xamarin). Among all of them React Native backed by Facebook got an unavoidable response from the application developers. The initial release was in 2013 and uses JavaScript for development and itself written in JavaScript.

However this month google launches Flutter 1.0 which is a stable version, Google comes with Flutter to resolve major cross platform development challenges for developers. Flutter uses Dart as programming language. Flutter also have stateful hot reload which reduces development cycles.

Performance

React Native apps are hybrid application and make complicated for developers to run the native components, architect and the library without problem. React Native uses Javascript bridge which lack startup time and overall performance. Due to using bridge apps are failing to achieve 60 fps display performance mostly when there is a animation or dynamically object moving.

Whereas Flutter compiles to native apps and get benefits of Dart which make it easy for developers to run on other platforms. Dart doesn’t need to use javascript bridge as its programming language and compiled machine code can directly communicate to hardware thus improved startup time and overall performance achieved. Dart’s compiled machine code allow to get 120 fps performance.

Platform support

Both are not just for Android or iOS but allow developers to run their apps on other platform like Windows, Browsers, macOS but Flutter goes one step ahead and supports more platforms like Rasberry Pi, Chromebook, Fuchsia.

Feature set

React native have ability to render UI, access to device API everything-else we need to install dependencies for task like state management, navigation, etc.

Flutter has the ability to render UI, direct access to hardware, navigation, testing, state-management, navigations.

Difficulty curve

In Reactive native at starting of project it’s easy to display something on screen but as we go with this party libraries like navigation or state management due to artless documentation and open issue on GitHub difficulty curve increases.

In Flutter first need to learn new language Dart and there are lots of widgets which needs to learn dance at startup difficulty curve is higher but after learning curves, difficulty curves goes down and at some point, it’s become static.

Productivity

In React native at starting everything seems easy and can easily show something on screen but at after some point we need third party libraries due documentation and open issues on GitHub productivity decreases. There are some repositories which were created due to hobby so not easy to work with these libraries.

Flutter it’s self provide lots of libraries like Widgets, state-management, navigation and have good documentation hence with time increase the productivity.

Web app support and PWA

Flutter apps can run on modern standard web space for this google have Hummingbird which seamlessly allow run the app on webs, it is in beta but soon we will see stable release also. Where as React have very clumsy support.

Localization

Flutter has Inbuilt 50 language support for multi language application which no doubt reduces errors, cost and time.

Documents

Documentation with React Native is artless where as Flutter facilitate the process thus make it easier to developers which indeed simplifies the job of the app developer.

Tools

React Native have tools like Reduxsauce, Expo, Reactotron, Ignite CLI, Atom, Nuclide where Flutter have comparatively big and well-known IDEs like Android Studio, Visual Studio Code which requires less configuration and easy to use.

Anand Suthar| SunArc Technologies
Anand Suthar
Senior iOS App Developer | Team Lead – Mobile Department