This insight is shared by By Pruthviraj Karur, Lead – Mobile Development, Codewave.

To remain competitive in a fast growing market with unpredictably changing needs, almost every business today has its digital twin, with a slice of the business run on a mobile app – 24/7.

Digital first businesses who want apps want better apps built in less time and minimal initial investment – as apps are most effective when they are continuously, iteratively improved to consistently meet changing market demands.

Agencies who design and develop apps would want to build it better, faster, and at the same time ensure it is reliable and cost-effective.

Welcome to cross-platform: Build once, run everywhere

Earlier to build an app, it needed to be coded separately for android and iOS. Say if building an android app takes 5 months, iOS would also take more or less the same amount of time. And it would also demand two different teams maintaining different sets of technologies.

Cross-platform frameworks like phonegap, ionic that were popular a few years ago, were not so good at performance and failed to give “native” experiences, hence most businesses opted for native development.

In 2015 Facebook released React-Native which solved these problems. Since javascript was used to develop react-native apps, it became quickly popular, as javascript already had a huge developer community.

ReactNative was the only good option available then for a cross-platform mobile application framework until Google released Flutter in 2017 I/O. The rise of Flutter after 2017 has left developers / companies confused about which platform to choose for their upcoming mobile projects.

In this article, we would compare Facebook’s ReactNative with Google’s Flutter.

1) Programming Language

ReactNative uses javascript as a programming language. Flutter uses dart as a programming language.

Since there is a huge javascript developer community already existing it becomes easy for all of them to learn react-native. Whereas if one has to start flutter he/she has to learn a new language altogether.

UI components

ReactNative has very few inbuilt UI components, and one has to rely heavily on the third party package managers (NPM’S) for most. Flutter on the other side has more inbuilt components & capability.

The third-party components cannot be relied on completely as these are generally open-source community-owned initiatives that can go cold anytime. If you find issues with the third-party components which are not active, then it can get harder to fix them and at times you may have to completely change them.

Flutter has inbuilt UI components / Widgets which makes the life of a developer easier, as they need not depend on third-party libraries for UI components.

Flutter has a clear advantage over ReactNative with respect to UI components.

Community/Ecosystem

When it comes to community/ecosystem React-native beats Flutter as javascript has a massive and well-established community.

Also apart from the community, one should consider how many devs within the org, already know javascript / ReactJS. If a team has already people who have been doing ReactJS and have more javascript developers – its good to opt react-native than flutter.

Architecture/Performance

ReactNative uses a javascript bridge and the code is compiled at the run time. Basically ReactNative uses javascript bridge to communicate with native modules.

Flutter uses the Dart framework which has many UI components inbuilt such as Material, Cupertino, Gesture, etc… Flutter compiles ahead of time (AOT) also it compiles down to native directly without needing a bridge to like react-native.

In ReactNative – for the UI components, it renders separate native widgets for iOS and Android which gets translated as actual native code inside the node modules. Whereas Flutter does not render native widgets, it paints its own 2 dimensional UI elements using a graphics engine called Skia by Google.

The performance difference may not be visible in most of the cases, as both of them support 60 frames per second (fps) animations. But when it comes to real-time interactions with sockets and computations Flutter has an edge.

My Recommendation

In ReactNative for most of the build issues, the answer is run rm-rf node_modules.

In flutter client, there is a command called flutter doctor which actually sets up the whole set up for you. If you have any issues in the configuration it will show that you have to run a few commands and after running them issues are generally sorted out.

The only hesitation I feel is there enough community support if one gets stuck in some unknown issues?

Apart from this and the Language point of view, there are no reasons one should not opt for Flutter.

Conclusion: Both Reactnative and Flutter have pros and cons If you want to use the available javascript / react developers one should go with ReactNative or if one wants to give it a try for flutter can try it as some of the industry experts are predicting flutter as future of mobile development and a lot of work is going on on both platforms.

Still confused on which to choose? Write to us at hello@codewave.com so we can help you make a conscious choice on the platform.

About Codewave

Codewave’s team of Design thinking led Agile, Digital transformation practitioners & lead consultants, through digital strategy consulting, design innovation and technology development, have impacted 200+ businesses in 15+ countries, since 2013.

We exploit modern open source technologies & frameworks to bring innovative solutions to life. We architect solutions keeping in mind — modularization and simplification of complex enterprise operations.