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?
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
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?
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.