24.01.2019

React Native vs. Flutter – which Cross-Platform Solution To Choose?

Article by
Robert Krajewski, CEO
In
all
7 min read

Neils Bohr used to say (although it is not of his making) that “it is difficult to predict, especially the future”. This constatation remains actual when it comes to choosing the right framework for cross-platform mobile app development. But it won’t stop us from trying.

Consumers spend now more than five hours a day using their smartphones and other mobile devices. Consequently, more than a halve (52,2% to be precise) of internet traffic is being generated by mobile devices in 2018 marking a slightly less than 2 percentage points increase from 2017.

As it is easy to guess, users don’t spend the majority of their time by just playing with smartphone’s basic functions. According to Smart Insights, apps account for 89% of mobile media time, with only about 11% accounting for browsing the internet.

Considering that, it is not a surprise, that companies look for ways to deliver their apps with less effort, with providing the unified user experience throughout all channels. That’s why there is an increasing interest in novelty mobile development technologies with React Native and Flutter being the crème de la crème.

What is React Native?

React Native is a JavaScript framework designed to write real, native mobile apps using JavaScript. The code used to build the app may be used both on Android and iOS, making it truly portable, without the need to recompile or rewrite parts of the code. What’s more, the code used in a web app may be reused in the mobile app developed with React Native, making it a convenient tool, that significantly reduces the programmers’ effort. Up to 70% of the code may be shared between the apps.

The framework invokes the native rendering APIs in Objective-C in iOS and Java in Android, effectively building a standalone app, not a “website in a frame”. React Native is supported by Facebook.

What is Flutter?

As the story goes, technological giants release complementary yet competitive tools that aim to broaden their domination in one or other field or another. Thus, Google released a competitive mobile-centric Software Development Kit – Flutter.

The software is used to build native apps in Android and iOS and is a primary tool to be used in designing software for Google Fuchsia, the operating system designed operating on Zircon microkernel instead of Linux monolithic core. Building apps with Flutter will basically feed Google’s new operating system with apps.

What makes Flutter unique is using its own rendering engine to draw widgets used in the app. The SDK uses Google-developed and supported Dart language.

Why should React Native and Flutter be compared?

Without leveraging possibilities of React Native or Flutter, popular cross-platform mobile app development frameworks, developers need to build two separate-yet-the-same apps for the two most popular mobile platforms. What’s more, the constant need for building and improving mobile apps results in making the competition similar to professional swimming – when it comes to top performance, it is the matter of subtle differences rather than ground-breaking features.

It is easily seen in the apps’ comments in Google Play or AppStore, where users frequently complain of lack of some features, seen in the competitive products, that may not be seen as crucial in most of the situations. Frequently on the success or failure of the app (or an action that is performed with it) the matter of seconds decide.

What’s more, once designed, the app needs to be maintained and choosing the right technology may be the way to reduce the total cost of ownership of the app. On the other hand, choosing the wrong technology to use may result in the need to maintain the non-optimal app or rebuild it totally, effectively wasting the first iteration.

Thus, the choice “React Native vs Flutter” may be more significant than it appears at the first glance.

What to consider when comparing React Native and Fluter?

When comparing React Native vs Flutter, the best approach is to consider both the developer’s and user’s sides. Missing the point of either result in the catastrophe. Considering that, there are eight aspects to think about. But first – the TL;DR table:

React Native vs. Flutter – which Cross-Platform Solution To Choose?
React Native vs Flutter – platform comparison

1. User interface

These two frameworks are significantly different when it comes to designing the user interface. React Native is based on components that are native to the system it operates in. On the other hand, Flutter is suited to work with the set of proprietary widgets. From the designers’ point of view, that’s convenient, as it makes obtaining a sleek and elegant look relatively easy. And in hybrid mobile app development, it’s a gain not to oversee.

Flutter lacks the iOS-themes, thus the app, even if fully functional, will significantly differ from apps done in another way. Thus, on iOS-based devices, the user experience is better with  React Native.

2. Time of development

It is not that hard to build the app – the challenge is in doing that in time, without exceeding the budget. That’s why the number of technologies supporting coding is growing exponentially – with Flutter and React Native being one of these.

Up to date, React Native proves to be one of the most convenient ways to code the app swiftly, as the technology enables coders to share up to 70% of the code. What’s more, users generally agree on the convenience and usability of the language, as 50% of surveyed users enjoy building JavaScript apps and 47% wish to make it their main programming language.

On the other hand, Dart used by Flutter is a relatively new development. With that comes a bunch of infancy mistakes and glitches that are yet to come. What’s more, Dart is not (not even close) as popular as JavaScript. Google prepared a list of Dart users. The similar list for JavaScript is called The Internet.

Using Flutter will require to train developers or find ones who know Dart. And that may not be that easy.

3. Performance

What’s a weakness in one aspect, may be a strength in another. Despite being the most popular web development language, JavaScript was NOT designed to be the one. It was initially a language devised to manipulate the Document Object Model. The fact that developers were able to build some incredible and rich applications with JavaScript is both a tribute to techie do-it-yourself approach and languages versatility. But in the end – JavaScript is used wide beyond its initial purposes. And as so – it is non-optimal.

On the other hand, Dart was built to be JavaScript’s successor. As a tool builds for a particular trade, it is performing way better. What’s more, JavaScript was initially released in 1995. The world of technology changed significantly from then and Dart leverages all the changes and new paradigms.

4. Community and support

Again, the fact that JavaScript is around since 1995 acts in favor of React Native by powering an astonishing community of programmers using the technology. Moreover, the framework comes with support from Facebook, one of the Internet’s giants. Finding a React Native Development Company is relatively easy.

When it comes to Flutter, Google’s support is not a thing to oversee, but being Dart-reliant, the technology lacks a community of programmers.

5. Stability

In the engineering, including software building, usually, the established solution is the one that is more stable, while the new one is providing the team with new solutions and features. Thus, React Native is a better choice when it comes to building a stable app. Although there is a stable version of Flutter, it is not as tested and proven as React Native. Considering that it should be seen as a tool for building a cutting-edge, new bold project rather than something designed to be stable.

6. Documentation

Flutter makes preparing the documentation for the software as easy as possible. It has a well developed Integrated Development Environment for designing, testing and modifying the software. It is compatible with Visual Studio Code and Android studio.

Contrary to Flutter, the process of documenting the project in React Native is a bit inconvenient (to be polite) and requires more experience, as there are multiple tools that can do the same job, so developer has to know, which of those will be the best for current project. So the process of designing the documentation is much better in Flutter.

7. The maturity of the platform

Software development is a constant race between leveraging the cutting edge technology and using reliable solutions, that proved themselves to work. The same dilemma comes when choosing between Flutter and React Native. The first one uses Dart and is a polished, brand new development aimed to replace the JavaScript. The latter relies on using proven technology and providing additional support to make it even more reliable. Moreover – the first stable version of Flutter was released in May 2017 and all the experiences and feedback is being gathered from that moment.

JavaScript is around since 1995 and Facebook uses React.js (a close ancestor of React Native) since 2011. So React Native is well-tested and combat-proven while Flutter had just recently left the factory and still has no scratch on the armor.

8. Users base and prospects

React Native is versatile enough to support projects of all sizes and in every industry. With its maturity and large client base, the framework has all the necessary components to keep the position of mobile development powerhouse with some significant brands like Tesla, Walmart and, Instagram on board. Keeping it simple – there are many established and powerful brands that will support the project to keep it alive in upcoming future. It is not a flutter of butterfly’s wings.

Contrary, Flutter is still a new technology, that is fighting for its presence among users. Due to Google’s backup and general versatility and convenience of the technology, the client base is rising, yet there are great brands to come. Considering the challenging nature of the IT employment market and natural tendency to follow the most common trends, it may be hard in near future for Flutter to gain momentum. And the lack of big brands using it may be the greatest challenge for Flutter.

Summary

When thinking about competition between React Native vs Flutter, it is good to see it as a metaphorical battle between the species that has many years of constant evolution and a young challenger, determined to conquer the territory.


For now, React Native seems to be a better pick both for companies and for developers, especially considering the stability and community support. And numerous React Native development companies.

On the other hand, Flutter makes building sleek and elegant apps much more convenient. Due to Flutter’s affiliation with Google, it is the perfect tool to follow the material design UX principles, that are seen among many mobile apps, including all Google-provided tools and solutions. The best example may be using elevations and shadows in the window management, where Flutter thrives.

Considering fact that 52% of consumers said that bad mobile experience made them less likely to engage with the company, Flutter may be a dark horse of mobile development.

Thus, to be honest, Niels Bohr had a point.


Did you enjoy the read?

We highly recommend to check out our other articles. If you are looking for a career opportunity, feel free to browse our job offers. Do you want to have your digital project estimated? Just click on a button below.

Estimate project Browse job offers
im-logo We are IDEAMOTIVE

We are software developement house located in the hearth of Europe - Warsaw, Poland. Our main areas of expertise include Ruby on Rails, React and React Native.

Consult Your product with our experts

Get an estimate or contact us