There has been a steady increase in programming languages you can use for both Android and iOS. Two of the most popular are Flutter and React Native 1. 

By Michael Kelley

IOS app developers are missing out. Android is the worldwide market leader according to IDC, with its some 87 percent share expected to continue to grow even if only slightly through 2023. Why should iOS app developers limit themselves to only one market? Sure Android development is different, but today it’s not even as though you’ve got to employ different programming languages—as Mehul Rajput points out, there has been a steady increase in programming languages you can use for both Android and iOS. Two of the most popular are Flutter and React Native 1. Which one should you use?

First, a little background. Flutter was officially released by Google in 2018; it is an open source platform that uses the Dart language, while React Native is a Facebook platform released in 2015 using JavaScript. React Native has been more widely used, but that could in part be because it’s been around a few years longer.

As  the name implies, React Native converts source code into different native components for iOS and Android that can be rendered differently. Similarly, Flutter uses natively-compiled applications and can be easily integrated into existing applications. Both can be easily edited without requiring a restart after each update to see changes, which makes development time that much faster. And both are backed by two well-established, leading companies.

So why use one or the other?

React Native is more established

As of May 2019 with version release 1.5, Flutter is a stable release no longer in beta. That said, it is still relatively new and its library may not contain every functionality a developer desires. (This is, however, changing rapidly as Flutter is becoming a more popular tool and as an open-source platform, more functionalities are constantly being added—so while your individual mileage may vary, you can expect it to improve.)

React Native has been around longer and has a larger and extensive user community. Overall, it has had more time to work on bugs and introduce improvements.

Flutter has better documentation

While you might think the more established platform has better documentation, that actually isn’t the case. Dhru Mevada notes that, “the documentation of React Native is somewhat disorganized and clumsy” and that Flutter has more efficiently organized documentation that “simplifies the job of the app developers.”  If you are unfamiliar with either programming language, you might want to go with Flutter because of the better documentation. An added plus is that Dart is easy to learn.

ReactNative is More Popular

JavaScript is one of the most widely used programming languages, not just for mobile, but also server and web browser uses (Flutter just recently announced a web browser version as a technical preview). According to a TIOBE survey, as of July 2019, Java is the most used programming language, and JavaScript the seventh most popular. Dart is rated 25th.

React Native Is Faster to Develop

React Native has a number of ready-to-use components. Which means app developers don’t have to reinvent the wheel, resulting in shorter lead times.  While Flutter also can incorporate packages and plugins to help build an app without developing everything from scratch, React Native still holds the edge here. Both languages support hot reloading, which allows recompiling while retaining application state. Flutter has an automated “doctor” that checks for system problems, and setup is more streamlined compared to React Native. But React Native has more APIs and is supported by more IDEs and tools. React Native’s lifecycle management and optimization is also simpler than Flutter’s.

No Widgets for React Native

Flutter uses proprietary widgets. React Native uses OS-native code. Consequently, it’s comparatively easy to build an app partially in React Native and partially in native code, e.g., Swift, Java or Objective-C. It’s also relatively painless to optimize an app where a few aspects have to use native code.

The downside is that in order to access most native modules, React Native relies on third party libraries. Flutter widgets remove the need for third party libraries, making it easier to render UI with everything immediately on-hand.

Flutter Features Testing

Flutter has a range of rich testing features at unit, widget and integration levels. React Native’ has few unit level testing frameworks and has little support for integration or UI testing. There are a number of third party tools to test React Native apps, but Flutter can do all that on its own.

But which is really better?

It depends. Budget, desired features, deadlines, programmer experience all come into play. In general, developers familiar with JavaScript will tend to favor React Native, while new developers most likely will find Dart easier to learn and less confusing than JavaScript. The main thing is that both programming languages allow you to create iOS and Android apps in a single platform.

Michael Kelley is a professional tech writer and content strategist with an app development background. He specializes in Android & iOS app design, as well as blockchain & dapp technology.

Photo: https://unsplash.com/photos/L0nipfx-Ry4