Flutter vs. React Native: Survival of the fittest
Cross-platform development perfectly fits in the current aka "do-more-with-less" era.
Right now, React Native (RN) and Flutter are the two leading frameworks enabling companies to create robust native experiences for iOS and Android out of just a single code base.
Back in 2015, React Native quickly became a golden child and stood alone in the development world. Two years later, the open-source Flutter project made its debut at Google's I/O developer conference and became React Native's frenemy.
Does this rivalry have a clear winner in 2019? We've pitted the two technologies against each other in order to present an unbiased comparison. Hopefully, this will help you decide whether you should opt for using Flutter or React Native in your current or future projects.
Flutter vs. React Native: A bit of history
We've already confessed our love for React Native, so let’s talk a bit about Flutter. It's a free, portable SDK used to create natively-compiled Android and iOS applications for mobile, web, and desktop.
Just before Flutter hit version 1.0, Google reported that thousands of companies - including such heavyweights as Groupon, Capital One, and Alibaba - had built their apps using this framework.
Fresh off the release, Flutter immediately made it to the Github Top 100 and eventually ended up in 20th place as of June 2019. Though the mobile development community is still slightly apprehensive about Flutter, it looks like Google is getting serious about making it the ultimate solution for building cross-platform apps.
What are Flutter's chances against React Native? First, let's dive into the development details to find out.
Flutter vs. React Native: Tech highlights
Programming languages
React Native uses JavaScript, while Flutter is based on Dart, a scalable programming language designed for fast apps on multiple platforms.
Nearly all web developers have some proficiency in JavaScript, so that works in favor for React Native. Any web development company that has little mobile experience could leverage this technology.
On the other hand, Dart holds relatively low popularity and is not widely used outside Google's products.
Right now, React Native is the winner as JavaScript exceeds Dart in terms of popularity and adoption rates. However, Flutter closely follows it by offering ease of use and a low learning curve.
Architecture
The RN architecture relies heavily on Javascript runtime environment architecture, or JavaScript bridge, which is used to access OEM widgets. In this case, the application passes the bridge each time to access widgets, which can cause some performance issues.
Flutter, in its turn, compiles the Dart code to native ARM code directly, without the bridge. Moreover, it is powered by a hardware-accelerated Skia 2D engine resulting in overall better performance and the victory in this round.
Ecosystem
Flutter framework boasts of multiple UI components, stateful management, testing, and several libraries, eliminating the need for third-party tools. Proprietary Flutter UI elements include widgets for Material Design (Android) and Cupertino (iOS), providing proper compatibility with OS's components and native screens.
Flutter lacks iOS-style form components in the Cupertino library, which means that some of the iOS design features aren't compatible with the libraries in the same Flutter application.
React Native, in its turn, uses external UI kits (React Native Material Kit, React Native Elements and NativeBase) in order to access most of the native modules. Unlike Flutter, it supports iOS-style form components.
RN is a clear winner here. Thanks to the framework maturity and a great number of UI libraries, it delivers better user experiences. In Flutter’s case, we still need to wait for the product to get more contributed content.
Documentation
Similar to its Google camp buddies Golang and Angular, Flutter offers clear and in-depth documentation, which greatly facilitates the job of developers. As for React Native, its documentation is a little bit clumsy and poorly structured. This is explained by the fact that React Native records are managed on the open-source basis, so finding what you are actually looking for can be rather time-consuming.
Hot reload
An important point about Flutter is that it has short development cycles. One can make changes to the code and witness their effects immediately. For instance, with the help of hot reloading, it’s possible to inject updated source code files that you edited during a runtime.
Both Flutter and React Native support hot reload that works at truly lightning speed in comparison with how iOS and Android apps native apps compile on XCode and on Android Studio, respectively.
Flutter's hot reload feature helps you make changes while the application is running. It will reload the modified code and let it continue from where you stopped.
While hot reload is also available for React Native, the speed leaves a lot to be desired. So we’ll give Flutter another point here.
Support
As a grown-up technology, React Native has a strong global community. It has more than 66,693 stars and 1,692 contributors on Github, meaning it's constantly being improved. According to AppBrain, currently more than 5% of the top US apps are built using this popular framework. The total number of RN-based applications is 15,000.
Though Flutter is still a very young technology, its fanbase is rapidly expanding. This can clearly be seen in the following graph which illustrates its popularity on Stack Overflow, as compared to React Native:
As you see, Flutter is breathing down RN’s neck. Though only 0.20% of the US apps use Flutter, it already has 33,248 Github stars and 223 contributors making the framework better all the time.
Flutter vs. React Native: Business prospects
Right now, React Native reigns over the mobile development kingdom. It won back a significant share of the market, now having almost unlimited business powers. RN is in vogue, as it offers strong performance along with maximum code reuse and cost saving.
The Vention team designed dozens of solutions (platforms, marketplaces, virtual assistants, bots, etc.) in almost every business vertical, including real estate, healthtech, fashion, travel, and entertainment. As you can see, our expertise proves the existence of the "React-Native-fits-all" approach.
Flutter has no less to offer. As we've noted earlier, it's a true sprinter. In very rough terms, it's possible to catapult your app to market with half the time, resources, and money spent by an Android and iOS software engineer.
Google also took special care with startups. As founders rely on user-friendly and efficient development kits, here you get eye-catching interfaces and flexible APIs which provide an opportunity to modify functionality on the fly in line with investors’ and users’ demands.
However, when starting with Flutter, you can face staffing problems as there’s not enough Dart and Flutter talent on the market. Yet, due to its simplicity, Dart is easy to pick up for your existing team. With any additional programming language, it might definitely work as a plan for your developers.
So far, Flutter might not be a fit for developing enterprise-level apps, games or solutions requiring a ton of features specific for particular devices.
Will Flutter defeat other cross-platform frameworks?
As described above, the struggle between Flutter and React Native is gaining momentum. But are there any other possible Flutter competitors? Here’s how Vention's senior developer Nikolay Dmitriev puts it:
Pretty intriguing, isn't it? Bear in mind that an important business decision such as ditching a true-and-tested technology in favor of a new one can have its consequences. Always consider the structure and capabilities of your team, time limits, and the project scope.
Frameworks' popularity is often influenced by the adoption of large brands as they tend to choose the most efficient ones. What's more, remember the famous "only the fittest survive" saying. The technologies best suited for the immediate environment (the fastest and the most cost-effective one) will continue to develop.