Building cross-platform mobile apps is trending these days, with the advent of frameworks that can build native apps without using swift for iOS or Java for Android.
React Native and Flutter are the two most popular cross-platform mobile development frameworks that are being used to build thousands of mobile apps today. If you have to pick React Native vs. Flutter which one should you pick?
There is no right answer to this question. The answer to this question depends on your business needs and use-cases. Both React Native and Flutter are powerful contenders with their own set of pros and cons.
Having knowledge in React Native and Flutter, We have tried to write this article without bias.
Both React Native and Flutter come with a lot of similarities like, building cross-platform apps using one codebase, hot reloading, excellent UI, awesome tooling and native features. But, they do have their differences.
Let’s explore React Native vs. Flutter against several factors.
Nevertheless, in my opinion because of the learning curve that comes with learning Dart, and it being a relatively newer language the winner here is React Native.
Winner: React Native
React Native is backed by Facebook and was open sourced by Facebook in 2015. Facebook has a dedicated team of engineers who are working on React Native and making it better everyday. Since Facebook is heavily invested in React Native, many internal Facebook products are coded in React Native. With Facebook’s heavy involvement in React Native, has gained a lot of trust and popularity over the years.
Flutter is a relatively new framework when compared to React Native. It is backed by another giant, Google. Flutter is Google’s open-source SDK for creating apps for Android and iOS using single codebase. Google is heavily backing Flutter, just like Facebook is backing React Native. The Google community is invested in making Flutter one of the best solutions out there to build cross-platform apps.
Winner: Both React Native and Flutter are equals.
What is Trending?
If you look at the recent StackOverflow Survey of 2019, we can get an idea of which framework developers prefer as of today. The survey asked developers about their most loved frameworks.
Flutter ranks higher with 75.4% and React Native also made the cut with 62.5% among most loved frameworks.
Something to keep in mind here is that React Native has been around longer years now and several people are already working on it. Whereas, Flutter is only a year old and is starting to get more popular. We will have to make the same comparison next year to see how they compare.
Based on the current trends we have a winner.
But there have not been many real-time profiling comparisons that I have seen comparing Flutter and React Native to definitely say Flutter is superior.
It is widely adopted and some of its popularity is also due to the success of React. React developers can jump on board and easily develop React Native mobile apps. Today products like Facebook, Instagram, Uber Eats, Tesla, Bloomberg, and many more use React Native for their mobile applications.
With Google being the backer of Flutter, it has gained quite a bit of attention too, this year.
Alibaba the online shopping giant, has adopted Flutter for one of their mobile apps. Google Ads and Hamilton music are also developed using Flutter. But other than these, there are not many apps in the app store that are developed with Flutter.
This is again something we need to re-visit next year to see how many products have embraced Flutter.
Winner: React Native
The same StackOverflow Survey of 2019, also indicated that React Native is more wanted in comparison to Flutter. This tells us that there are more React Native jobs out there, in comparison to Flutter.
We probably cannot come to a quick conclusion about Flutter based on the jobs available today. Flutter is still new and upcoming, and few years down the lane there maybe a demand for Flutter developers. But as of today there are plenty of React Native jobs when compared to Flutter jobs in the market. This is because React Native developers are also React developers, and React happens to be the most popular front-end framework out there.
React Native ranks higher with 13.1% and Flutter with 6.7% among most wanted frameworks.
So learning React Native might be more beneficial if you are on a look out for a job soon.
Winner: React Native
Flutter vs. React Native: In a nutshell
|What is it?||A portable UI toolkit for building natively-compiled apps across mobile, web, and desktop from a single codebase||A framework for building native applications using React|
|Official release||December 2018, Google I/O||March 2015, F8 Conference|
|Free and open source||Yes||Yes|
|Popularity||81,200 Stars on Github (December 2019)||83,200 stars on Github (December 2019)|
|UI||Flutter apps look as good on the up-to-date operating systems as they do on older versions.Since they only have one codebase, the apps look and behave similarly across iOS and Android – but thanks to Material Design and Cupertino widgets, they can also imitate the platform design itself. How’s that possible?Flutter contains two sets of widgets which conform to specific design languages: Material Design widgets implement Google’s design language of the same name; Cupertino widgets imitate Apple’s iOS design.This means that your Flutter app will look and behave naturally on each platform, imitating their native components.||Application components look just like native ones (e.g. a button on an iOS device looks just like a native iOS button, and the same on Android).The fact React Native uses native components under the hood should give you confidence that, after any OS UI update, your app’s components will be instantly upgraded as well.That said, this can break the app’s UI but it happens very rarely.If you want your app to look near-identical across platforms – as well as on older versions of an operating system (as Flutter achieves) – then consider using third-party libraries (like this one). They will enable you to use Material Design components, in place of native ones.|
|Sharing code||Currently on iOS and Android – but the long-term vision for Flutter is to offer an integrated solution that allows developers to write one code for both desktop & mobile, and for the web.Flutter for Web support is available as a tech preview but still, this isn’t an alpha channel yet.When it comes to developing desktop apps with Flutter, APIs are in their early stages of development and so will be probably released, just further down the line.||iOS and Android – but there are select libraries that allow you to use the same code to build iOS, Android, web, and Windows10 apps.You can also extract shared code in mobile, desktop, and web apps, to a separate repository; treat it as a separate project; then inject it in the same way as another dependency.This allows a developer to focus on writing code for a specific platform without having to consider compatibility with another one.|
|Top apps made with this technology||Xianyu app by Alibaba, Hamilton app for Hamilton Musical, Google Ads app||Instagram, Facebook, Facebook Ads, Skype, Tesla|
|Time-to-market||Typically much faster than native development.||Possibly as fast as development with Flutter.However…React Native uses bridge and native elements, so it may require separate optimization for each platform – a problem that widget-based Flutter doesn’t run into. It may make the app development with React Native longer.|
|Competitive advantage||Great look and feel thanks to rich widgets;Rapidly growing community, and popularity;Excellent documentation with strong support from the Flutter team (which makes it easy to start developing with Flutter);Improving Flutter for Web, offering the potential for one codebase across mobile and web platformsDifficult to beat time-to-market length||Stability (5+ years on the market);Many successful, prominent market players using React Native;Mature, vast community;Easy-to-learn technology;Plenty of tutorials and libraries, which allow quick and easy development;Code can be easily reused for both web app and desktop app development.|
It is an interesting time in mobile development. We are moving away from just native development for iOS or Android and embracing newer technologies that build cross-platform mobile apps. Although, React Native does have some strong points today, Flutter is an emerging contender and I am sure it will be embraced by a lot more people in the coming days.