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.
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.
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.
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.
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.
Still confused on which to choose? Write to us at email@example.com so we can help you make a conscious choice on the platform.
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.