Since last a few years, cross-platform app development gained a lot of popularity, which allow us to develop mobile apps that can run on multiple platforms with a single code base. There are big cross platforms available to build apps like (React Native, PhoneGap, Appcelerator, Sencha, Xamarin). Among all of them React Native backed by Facebook got an unavoidable response from the application developers. The initial release was in 2013 and uses JavaScript for development and itself written in JavaScript.
However this month google launches Flutter 1.0 which is a stable version, Google comes with Flutter to resolve major cross platform development challenges for developers. Flutter uses Dart as programming language. Flutter also have stateful hot reload which reduces development cycles.
Performance
React Native apps are hybrid application and make complicated for developers to run the native components, architect and the library without problem. React Native uses Javascript bridge which lack startup time and overall performance. Due to using bridge apps are failing to achieve 60 fps display performance mostly when there is a animation or dynamically object moving.
Whereas Flutter compiles to native apps and
Platform support
Both are not just for Android or iOS but allow developers to run their apps on other platform like Windows, Browsers, macOS but Flutter goes one step ahead and supports more platforms like Rasberry Pi, Chromebook, Fuchsia.
Feature set
React native have ability to render UI, access to device API everything-else we need to install dependencies for task like state management, navigation, etc.
Flutter has the ability to render UI, direct access to hardware, navigation, testing, state-management, navigations.
Difficulty curve
In Reactive native at starting of project it’s easy to display something on screen but as we go with this party libraries like navigation or state management due to artless documentation and open issue on GitHub difficulty curve increases.
In Flutter first need to learn new language Dart and there are lots of widgets which needs to learn dance at startup difficulty curve is higher but after learning curves, difficulty curves goes down and at some point, it’s become static.
Productivity
In React native at starting everything seems easy and can easily show something on screen but at after some point we need third party libraries due documentation and open issues on GitHub productivity decreases. There are some repositories which were created due to hobby so not easy to work with these libraries.
Flutter it’s self provide lots of libraries like Widgets, state-management, navigation and have good documentation hence with time increase the productivity.
Web app support and PWA
Flutter apps can run on modern standard web space for this google have Hummingbird which seamlessly allow run the app on webs, it is in beta but soon we will see stable release also. Where as React have very clumsy support.
Localization
Flutter has Inbuilt 50 language support for
Documents
Documentation with React Native is artless
Tools
React Native have tools like Reduxsauce, Expo, Reactotron, Ignite CLI, Atom, Nuclide where Flutter have comparatively big and well-known IDEs like Android Studio, Visual Studio Code which requires less configuration and easy to use.