Thoughts on Flutter vs React Native

Shreyas Nisal
3 min readMay 2, 2021

I’ve been developing apps using both React Native and flutter for a couple of years now, and I thought I should write something on what I feel about the two. I want to go beyond the popular comparisons on factors such as performance, community support, et cetera, and talk about my personal opinion on the two.

External Libraries

I like the fact that basic functionality in flutter doesn’t require adding a package as a dependency. When it comes to react native, things as simple as navigation require an additional package. According to official react native blog posts, some functionality was removed from the core react native package so as to move towards a lean core.

However, the biggest issue with having too many libraries is that we need to keep track of updates in each library, upgrade our project according to those, and manage dependency conflicts. With a large-scale, production application, this becomes a rather tiresome task.

Code Structure

The way react native code can be designed, keeping stylesheets different from the functionality and JSX markup is much more convenient to manage as compared to flutter code where most of the markup and styles are written together.

This might be because of the way I have been writing code and there might be a better way to approach it, but it affects readability to a large extent as far as my projects are concerned.

Flutter has library classes for everything, and although I understand how that might be useful from a design pattern point of view, but when it comes to using those, it becomes a huge pain. I don’t want to create a new object of BorderRadius class to specify the border radius for a widget; I just want to give a number or a percentage there!

Similarly, although it makes sense to have Stateful and Stateless widgets since widgets, I feel like it becomes confusing at times. Stateless widgets, which are immutable and where the build function is called only once, might be useful in terms of faster rendering, but I wouldn’t mind having Stateful widgets only.

Reusable Components/Widgets

Somewhat continuing my previous point on code structure, I feel like developing reusable components in react native is much simpler as compared to those in flutter. This allows for more modular code and hence a better structure.

Moreover, it is easier to create files to store information such as color themes to be used throughout the app. In flutter, there is once again a built-in class that needs to be used for a theme.

Using Flutter vs React Native

Having discussed the above factors, and also taking into consideration the popularly discussed ones, I want to finish off by talking about situations where I use flutter and where I use react native. Most often, when I want to make extremely standard apps, where the look as well as the functionality is similar to a lot of existing apps, I go with flutter. It gives the app a clean look and a professional feel.

However, as soon as I require an app with an unconventional look or functionality which I think isn’t present in most of the existing apps, react native is my fallback option.

This is of course just my opinion and you might be more comfortable with flutter as compared to react native. Continue using whichever framework you prefer, and keep up the development. Happy coding!

Don’t forget to give the article a clap (or 50) if you found this article insightful, and follow me for more!

--

--

Shreyas Nisal

Software Engineer at Twilio | Ex Research Assistant at MIT Media Lab, Exertion Games Lab | Ex Intern at Twilio, BitHyve, Mednet Labs