Flutter vs React Native

John Souza
3 min readNov 16, 2020

Navigating mobile coding alternatives

Mobile development can be cumbersome because of the necessity to develop applications across multiple devices. Android and iOS are the two main competing mobile platforms, being developed by Google and Apple respectively. Creating an app that is made specifically for a phone is called Native Development. Android phones can run apps created in Java, while iPhones can run apps created in Objective C or Swift.

Because Android and iPhones run different types of code, tech businesses over the years have generally had to have two separate development teams: one for Android and one for iPhone. This can be inefficient for obvious reasons. This has sparked a movement within the development community to create a framework that will build iPhone and Android apps at the same time. The two most popular choices for for this type of development are React Native and Flutter.

React Native

React Native was created by Facebook and is very similar to the React framework, as the name would suggest. Just as you would define components within a React application, you do the same in React Native. These components are written in Javascript and compiled to Native code at runtime. On an Android phone, those components are compiled to native Android components, and on an iPhone, those components are compiled to native iPhone components. This means that your application will have the unique look and feel of its respective device.

Flutter

Flutter was created by Google. Flutter revolves around widgets. These widgets contain their own styling, and can have multiple child widgets within them, forming a tree. In fact, the entire flutter application is, in that of itself, a widget. Flutter is written in the Dart programming language, which is a newer frontend language developed by Google. Dart is a strongly typed language that acts like a mixture of Javascript and C++/Java. This code is compiled into Native code when the application first builds.

The Flutter framework builds heavily off of Material, Google’s UI structure. At first glance, this would mean that Flutter apps will tend to look more Android-ish than iPhone-ish. However, Flutter offers Apple compatibility through its Cupertino styling, which will style its widgets more like an iPhone if the app is running on an iPhone.

Which Should I Choose?

Your choice of framework is really going to come down to three considerations: framework familiarity, language advantages, and performance.

React is the most popular frontend framework for web development. For this reason, developers find it very easy to bridge into mobile development with React Native. Developers familiar with React Native are much more common than developers familiar with Flutter, and for that reason, React Native wins some points for framework familiarity.

When it comes to language advantages, React Native is also written in Javascript. Even if someone has no experience in React, he will almost assuredly have some background in writing Javascript. Flutter, however, is written in Dart, which is almost exclusively written for Flutter applications. However, the Dart language offers the advantage of being a statically typed language, which can save time for the developer in the long run, especially as the language grows.

Performance becomes the biggest issue for React Native. React Native, as stated earlier, compiles Javascript to native code at runtime. This means that end users have to wait on code to be compiled as they are using the application. Flutter, however, pre-compiles its code to native code. This means that an application will run much smoother for an end user if it is built with Flutter.

Conclusion

My personal opinion is that Flutter is the future. React Native came on the scene first and revolutionized the way that we think about mobile applications, but it’s performance issues significantly weigh out its advantages. Even though someone will have to learn a new programming language and framework to learn Flutter, developers should be used to doing that anyways, as a developer very rarely works with the same framework and language throughout his entire career. Let Javascript be the language of the web, and let Dart be the language of mobile. Flutter has a bright future, and I would recommend any web developer interested in diving into mobile development to give it a go.

--

--