Which is Superior: Flutter or React Native

Which is Superior: Flutter or React Native

This is certainly a big question in mobile app development domain. Many native mobile developers & web developers who are willing to learn cross-platform mobile app development do think about this.


 Flutter Vs React Native


React Native vs Flutter? Being a native Android developer, when I thought to learn new mobile technology, this was certainly a question. But as React Native is a bit older & more popular than Flutter, I started with React Native first. After learning from the documentation provided, I checked with some demo codes & tried very basic screens. Not to mention I have not really worked on JavaScript before but had little experience of it & CSS.

When I started and saw it working I really liked it. Just create components & CSS like the styling and you are done. At the simplest code level, you can put everything in one place. Most mesmerizing for me was the live reload, you just save it & bang… you see the updates on your phone (or emulator).

I tried some basic features which are required for a mobile app, like user inputs, clicking on buttons, navigating to other screens, making network calls & showing a list view. Then I started working on some bug fixing & other minor updates on the already developed project.

This experience with React Native gave me good vibes about it then I tried to learn more about this. Till now for me React Native was like magic, it is easier to start & create your mobile app for both major platforms available iOS & Android.

What else do you need? You can learn only one language & start coding and as a result, you will get an app for both iOS & Android. This sentence made me curious about such technologies so I thought to explore others as well.

The second obvious choice I had was Flutter. So I started for Flutter, installed everything required & tried my first Flutter project. To be very honest it didn’t look good to me, the code structure looked messy & complex, there were so many things & hard to understand the flow of it. This might have happened because I was very new to Dart language & hardly had seen it’s code before. Also, there are classes one for StatelessWidget another is StatefulWidget then you have a class for State. The syntax is also the mix of C & JavaScript styles. Probably these were the reasons which gave me my immediate thought ‘it doesn’t look good’.

But one should never judge a book by its cover, so I started checking more on this & I tried basic things like user inputs, button clicks, navigation & etc. Again if I compare this first interaction with Flutter with my first interaction with React Native then I would say later one is easy. It is difficult to start with Flutter as compare to React Native. Till now my impression was React Native is better, but still, I started exploring more on these two. Before we can conclude anything, let’s go to some background of cross-platform development.

Hybrid apps

Before React Native & Flutter there were (& still, are) platforms available for creating hybrid apps like PhoneGapIonic & others. These platforms use web technologies like HTML, JavaScript & CSS. Basically, it creates a website which eventually runs on a native WebView component, so actually, it is a web page running on a mobile web browser, it works like a native app & the user doesn’t understand the difference. Using these platforms you can create app faster if you are a web developer.

Though you can develop app faster & no doubt it is a big advantage, but with this, there are some shortcomings in using hybrid app development platforms.

Few are like:

  • Your app may be slow as it loads on a WebView component. Performance of a WebView may differ platform to platform, it may also lead to inconsistent behavior across many devices available.
  • Using native hardware features can be a tedious task. Not everything can be used in a smoother way.
  • If there is any new feature or update on the native platform, it may not be easily (or even) available early. You will have to wait for the support plugins you can get to access those new features/updates.
  • One more point can be about UI, it may not look & feel the same as native ones.

I am sure these hybrid app development platforms are improving. They are trying their best to match the performance of their app with an app developed through the native process.

The above segment has slightly taken the focus away from our main topic i.e. Flutter vs React Native? But the segment was necessary because it will help us understand why React Native & Flutter are different. What advantages these have over hybrid app development and ultimately we can compare both & try to find which is better.

The biggest difference between hybrid apps & the apps developed through React Native or Flutter is that compilation to native code. As mentioned before the hybrid one is actually a website which is packaged as a mobile application & on the other hand React Native & Flutter create apps which are compiled to native code. The components or widgets you use are compiled to their native equivalent. Then it becomes obvious that it will work faster as compare to a website running on a WebView.

From this, we can say the this ‘compiling to native code’ way is better than ‘creating a website & use it as a mobile app’ way, at least in terms of performance. You may develop an app bit faster with hybrid platforms but performance is important.

Now I think we can move to our original topic.


The Real Question

The first parameter for comparison we can take is ‘compiling to native code’

For React Native we can say the app is developed as a web app (because it uses JavaScript) but compiled to the mobile app. In React Native the JavaScript code is not compiled to native code but it runs on a separate thread which communicates with the native part. Actually, the UI components are compiled to native code by React Native tools.

The JavaScript uses a bridge to communicate with the native part, a native section where all the platform services & widgets are available. This bridge dependency makes it slow & can cause performance issues. Especially if you have a task like rendering UI because in this case, you need frequent communications with native.

The Dart code written in Flutter is compiled to the ARM C/C++ library, which is close to the native code. There is no Dart code running on any thread which communicates with native code. Actually, the compiled library is consumed by native code and that is why it is faster & has better performance. For rendering like tasks it doesn’t go to OS, it uses library & renders on screen.

Now the second parameter can be pre-built widgets or components library.

Here the Flutter provides number widgets or UI components compared to React Native. But the widgets here don’t adapt to OS platform automatically, on the other hand, React Native comes with some partly adaptive components. By adaptation means it can change it’s style automatically to platform it is running on. In Flutter, you can manually check the platform & use widget according to that platform.

As React Native comes with fewer components compared to Flutter, so you have to create custom styles if you want more. In Flutter also you can create custom widgets.

The third parameter is available to support.

As React Native is older than the Flutter so it has more support available, it has a bigger community than Flutter. You can find a lot more libraries & resources for React Native. But not to forget both Flutter & Dart are developed by Google, so it will definitely grow.

One more parameter can be ‘ease of learning’.

From my experience, I can say React Native is easy to start but later it all depends on the third party libraries available that can make things difficult in the long run.

Flutter is difficult to start, as it is complicated, you will have to spend more time in learning but sure, in the long run, it will reduce the efforts.

So this was my exploration of both technologies available. I am still digging more into these two. From the above points, I can say Flutter has some advantages over React Native in terms of performance at least. Rest you can decide.

I hope you liked this article & learned something useful.

Happy Learning!!!

React Native : Worth the hype?

React Native : Worth the hype?

react native worth the hype

It has been a while that React has been around, but it was just last year that Facebook announced that it has built a library to build native apps using React ( read as Javascript ). Facebook decided to call this React Native.

There have been attempts at developing Javascript frameworks to build mobile apps, but I see React Native as a paradigm shift in the field. It is far far ahead as compared to other Javascript frameworks for building mobile apps in terms of performance. Having said that, the idea behind React Native was not building ‘write-once, run anywhere’ app but, more of ‘learn-once, write anywhere’ thing. For the sake of this article, let’s not categorize React Native with existing Hybrid Frameworks.

Having some free time lately, I found myself browsing the React Native docs and found it amazing. I would have been hugely disappointed in myself if I did not try this out.


Choosing the project:


I did not have to think a lot about the kind of project to do in React Native. I did not want to write a server code for the app because the whole objective of the project was to learn React native and it would be an unnecessary burden on me writing a server. So options were clear —

1. Write a client-only app. e.g. An alarm clock or the classic To-do app. I could not come up with something interesting in the category.

2. Consume an API service and write a client. A Reddit client! Yes! That way I can use my app for browsing Reddit and make incremental improvements to the app as well.

(Reddit API is quite straightforward and easy to grasp. Let us not go into its details as it would dilute the purpose of the article)


Setting Up:

Setting up React Native was quite easy. You get the required libraries from rpm, and that is it. Use your favorite editor/IDE and you are good to go. Personally, I would recommend using Atom by GitHub and installing the Nuclide package but people use vim or emacs with appropriate packages as well.


Learning Curve:

I would say if you have strong component-based programming experience, the learning curve would be much smoother. Otherwise, it might take you a while to grasp a few concepts but it should not be a tough nut to crack.





what kind of sorcery is this?


Oh, la la! Writing JavaScript code and seeing it run on iOS emulator run as Native is impressive. What wizardry these guys have pulled off leaves you mesmerized.

Anyway, as my app began to grow I ran into a problem ( as is the case with developers ). In React, the state is essentially the core of the application, which determines how each component behaves and renders. In my case, the state of the application was being changed from a lot of places and soon it was difficult to track from which modules of my app the state was being changed.


Meet Redux:


Essentially a simplified Flow. It provides a framework to manage your state changes. It works on the principle of Action acting upon Current State, provides the Next State. React Native works coherently with the Redux Framework and solves much of your state change issues.


Overall Impression:



To me, React Native does look like a strong contender for the future of mobile app development. What remains to be seen is how this affects the current mobile app dev platforms.

Google looks comfortable with its Java-based Android SDK, although there was a rumor about Google switching from Java to Swift after it’s a lawsuit with Oracle ( which I find it unlikely in near future ). If that does happen, ‘learn once, write anywhere’ methodology is satisfied sans React Native with the perspective of mobile apps.




Apple pushing its Swift language and rolling out updates, the stage looks set. What stands the test of time, remains to be seen. 


About RemotePanda

RemotePanda is a personalized platform for companies to hire remote talent and get the quality work delivered from the city Pune. The resources in our talent pool are our close network connections. While connecting them with you, we make sure to manage the quality, growth, legalities, and the delivery of their work. The idea is to make remote work successful for you. Get in touch with us to learn why RemotePanda is the best fit solution for your business requirements.