Comparison Between Flutter Vs React Native for mobile app development

Amit Khirale
8 min readFeb 21, 2018

Facebook Twitter Google Plus

flutter vs react native

React Native is an open source framework backed by Facebook which was released on GitHub that covered the way for combining both iOS and Android platform’s native APIs. However, Google’s Flutter is a comprehensive move, which allows you to create Android and iOS highly responsive native apps at the same time.

In this competing world, the ultimate goal of a Mobile App Development Company is to choose a cross-platform framework which should enable developers to write a single codebase and deploy it across multiple platforms, sharing as much code and thus, time and money as possible. In that way, we can provide help to our customers in choosing a right framework which might best support them to achieve their goals.

Flutter is a mobile app SDK (software development kit) built by Google that allows us to create high-performance, high-fidelity and extremely fast applications that can run on multiple platforms like Android and iOS. Now, what makes flutter powerful as it has a thin layer of C/C++ code but most of its systems are implemented in Dart (Dart is a general-purpose programming language originally developed by Google ) that developers can easily approach read, replace, or remove. This gives developers tremendous control over the system.

Tools in the cross-platform solutions:-

  • React Native
  • Flutter
  • Xamarin
  • Progressive Web Apps (PWA)
  • Kotlin Native
  • J2ObjC/Doppl (Android-centric cross-platform)
  • Ionic2
  • Cordova/PhoneGap/Titanium
  • Unity

Of that list, we picked the two most popular solutions of 2018 which are React Native vs Flutter.

Flutter Vs React Native Which Is Best For Mobile App Development

React Native has shown a lot of popularity in recent years, mostly from the ReactJS and web community. Being written in JavaScript has fired up its adoption rate and many companies switching over it. Whereas, Flutter has been promoted heavily by Google since I/O 2017 and has generated significant interest by the developers it is new in the race of mobile app development industry and has a long potential to go ahead in the race.
Here is the Quick Comparison Between Flutter vs React Native.

The Language Stack
Flutter is an open-source mobile application framework that works on a completely different programming language called Dart, While React Native lets you build mobile apps using only JavaScript.

React Native (JavaScript)
React Native lets you build mobile apps using only JavaScript.It compiles its dynamic JavaScript code to native view at runtime. The rest of the code runs in the additional virtual machine that is packaged inside the app itself.

Flutter (Dart)
Dart is a general-purpose programming language which was developed by Google in 2011. Developers at Google and others use Dart to create high-quality, mission-critical apps for iOS, Android, and the web. With features aimed at client-side development, Dart is a great fit for both mobile and web apps.

Dart is based on c/c++, java and supports things like abstraction, encapsulation, inheritance, and polymorphism. Flutter team picked Dart because it matched the way they were building user interfaces, With Dart bridge, the application size is bigger, but it works much faster. Unlike React Native with Javascript bridge.

Architecture

React Native
React Native’s application architecture is known as Flux. Facebook uses Flux to build client-side web applications. Every framework mostly follows MVC framework. The unidirectional data flow is the main concept of Flux. here React takes care of view part and Flux, a programming pattern takes care of the Model in the MVC.

Flutter
A Dart app architecture library with uni-directional data flow inspired by RefluxJS and Facebook’s Flux. Flutter-flux implements a uni-directional data flow pattern comprised of Actions, Stores, and StoreWatchers. It is based on w_flux but modified to use Flutter instead of React.

Flutter Flux’s implements a unidirectional data flow pattern that consists of Actions, Stores, and StoreWatchers.

Flutter Vs. React Native Performance

React Native
React Native / Native script you need a bridge to call Swift or Android or Windows & Mac APIs, with Flutter it’s dart so you don’t need that everything potentially would be native, this also solve the problem with the JS Ecosystem split between many different versions like CommonJS, AMD. In React Native developers face problems while developing the hybrid apps, but for native apps, you won’t face any performance related issues. It offers seamless performance in all standard cases and it is highly reliable.

FlutterComparing both facebook’s React Native vs Google’s Flutter on the basis of their app performance, it is the Flutter takes the crown over its competitor. Flutter has the advantage of Dart and there is no JavaScript bridge for initiating interactions with the device native components, the speed of development and running time gets accelerate drastically.

Flutter has set the animation standard at 60fps is a clear sign of its high performance. Lastly, since Flutter is compiled into the native ARM code for both Android and iOS, performance is the one issue that it would never face.

User Interface (UI/UX)

React Native
Unlike Flutter’s Flat App, in React Native we had to use third-party libraries since React Native does not have a UI components library of its own.We used components such as NativeBase, which is an open-source UI components library created by us. React Native Elements, React Native Material Design and Shoutem are other similar UI libraries that are available to the user.

While comparing user Interfaces between React Native vs flutter, React Native is like similar to using HTML without any CSS framework. It is based more on the native components both for Android and iOS also better User Experience (UX) when a user taps into the Operating System.

Unlike Flutter’s Flat App, React Native does not have a UI components library of its own it uses third-party libraries and components like NativeBase. NativeBase which is an open-source library builds a layer on top of React Native that provides you with the basic set of UI components.

Currently, there are 3 main UI libraries:

  • Shoutem UI Components
  • React Native Elements
  • Native Base components

Flutter
Layout widgets are currently part of the application, new widgets can be included and existing ones can be modified to give them an alternate feel and look, the trend has now changed and the UIs have become more user-friendly, easy to use, increase user engagement, and win grants.

Flutter accompanies built-in beautiful Material Design and Cupertino like iOS-flavor widgets, rich motion APIs, smooth natural scrolling, and platform awareness. Flutter has its own UI components, material design, adaptable widget sets and along with an engine to render them on Android as well as an iOS platform.

Here are a few examples of Flutter Widgets:

  • Drawer
  • Inkwell
  • GestureDetector
  • DefaultTabController

Check out 7 Top ReactJS Features Which Makes It Best For Development

Community Support

React Native
React Native released as open source on GitHub in 2015 and is the most popular framework on Stack Overflow it is backed by a huge community with 68k stars on GitHub, 14.5k user subreddit, ~9000 user Discord chat and strong support on Stack Overflow that’s why it has more third party libraries/plugins than Flutter.

Flutter
The Flutter team can be found for support in a ~4.5k user subreddit, ~30k stars on Github, ~740 users on Google Group and on Stack Overflow. Despite Dart not receiving much love in the Stack Overflow developer survey, early blog posts have been positive towards the use of Flutter.

Flutter’s community is not as strong as the one for React Native. But support provided by the Flutter Team at Google is really good. Their documentation is thorough enough to help you and they address the questions posted within a reasonable time frame which help to get started with flutter with app development using Flutter.

Unit Testing

React Native
Developers have all JavaScript frameworks available for testing at a unit level. However, when it comes to UI and automation testing, the situation is not as bright. Although a number of third-party libraries are available, there is no clear picture there.

Flutter
Flutter is a new framework and when it comes to testing a new framework it’s somehow difficult but flutter uses Dart which offers an excellent unit testing framework which can be utilized and Flutter provides you with a great option for testing the widgets on a headless runtime, at unit test speeds.

Development Time

The Web App Development Company work on very strict deadlines nowadays and if the frameworks deliver short development time then there are major possibilities that companies would opt for that framework.
React native has many different third-party libraries, such as Calendar, Carousel, and Modal also It has ready-to-use components, which improves the speed of cross-platform app development. In Flutter, we need to add separate files for both iOS and Android platform. In each of these files, we need to add code that corresponds to the rules of the platform. Although Flutter has also promised of high-speed app development.

Hot Reload

Both Flutter and React Native support stateful hot reloading which is blazing fast compared to how true native apps recompile in Android Studio and XCode. If your app encounters an error, you can typically fix the error and then continue on as if the error never happened.

You can make a change to a Flutter app while it is running, and it will reload the app’s code that has changed and let it continue from where you left off.

Configuration & Setup
Flutter’s setup process is much more straightforward as compared to React Native. Flutter comes with the provision of automated checkup of system problems, something which React-Native misses to a great extent.

Stable for development: React Native vs Flutter
The stability becomes an important factor when you are developing a cross-platform app. Since Flutter is considerably new in the cross-platform industry, the number of businesses that have adopted the SDK for developing their cross-platform apps are very less. However, with the Flutter Beta 3, which offers improved developer tools and asset system.

On the other hand, React Native showcase page of apps that have been developed using the framework is much higher. It was quite stable from earlier and it also enjoys the support of a large community of contributors.

Conclusion
React Native and Flutter both have their own set of pros and cons. Flutter is still new in the market of app development industry and React Native made its inception way before to gain a good audience ground.

I think a lot of people don’t realize the untapped potential with Flutter + Dart. There is some work for Flutter on Desktop, it’s still half a decade away from being able to compete with an electron, but eventually, it will get there and it would mean 100% cross-platform application with 100% code sharing.

--

--

Amit Khirale

Technical SEO & Content Marketer with a keen interest in JavaScript, web performance, and how engineers and marketers can work better together.