React Native or Flutter
With React Native and Flutter both entering new stages of maturation, a number of established iOS and Android apps have already been built on each system. And with a growing list of developers for each platform, it isn’t difficult to find a number of blog posts comparing the two.
This comparison won’t rehash all the points already brought up by several of the good comparisons already out on the web. Instead, we will try to tackle their use as a starting point and give some tips on how to get a better understanding of each platform on your own.
As a background for the comparison, I’ve developed Android and iOS apps using native Swift and Java code and developed at least one React Native and Flutter app published in the Apple iOS and Google Play Android app stores. Feel free to look at some of them below and see if you can tell which one is Flutter and which is React Native.
Equipment and software
For both Flutter and React Native, a Windows computer is required, and for iOS development, a Mac OS computer is required. React Native users have an option to use Expo to avoid the Mac OS requirement, but keep in mind Expo has its own caveats since an RN app written for Expo runs inside the Expo app on the device.
Both React Native and Flutter have good tooling for Visual Studio Code but can also be developed through Android Studio. For creating React Native or Flutter apps, developing through XCode would not be recommended, but it will be needed to set up the iOS version.
Overall, Flutter is easier to set up as it requires less software. For each, Android Studio is required to run the Android emulator. Flutter then requires simply installing and setting up the Flutter tool. React Native requires adding Python2, Node/npm, and highly recommended, Yarn, as well as the React Native package.
Usage
Each platform has their own pros and cons. But the big picture is that neither are significantly more difficult to work with than the other. Perhaps the biggest frustration in React Native is that is it less stable than Flutter, as it relies on more third party tools and packages which doesn’t always align well with the React Native core releases. Both have excellent online resources to tackle most common mobile app needs. One aspect of React Native to be aware of, is that it has changed throughout the years so some of the older documents might be outdated.
Flutter’s programming language, Dart, is newer and more structured than React Native’s Javascript. If you are good at picking up new programming languages, Dart should not be difficult to learn, and should not impede you from trying Flutter. Once you familiarize yourself with it, you might like it better than Javascript.
Recommendations
You can read and watch a dozen opinions on each platform, but the best way to know which works for you or your company’s needs is to work with the tools. Build a simple app to understand the workflow. If you are not sure what to build, try building something like this BMI calculator without looking at the source code. It’s not overly complicated but has enough features to understand the platforms. Do one for React Native and one for Flutter. To gain additional insight, try adding another screen to display history in list form.
If one has to be chosen though, it would be Flutter. The platform is built from the ground up for mobile app development while React Native was re-purposed for mobile. The seams manifest themselves when working in the ecosystem. If you know the app you are creating and you research to find that Flutter has support for all the features in the core product or via third party packages, go with Flutter. If not, use React Native.