9 min to read
If you decided to go with cross-platform development an can't choose which framework to choose - here is an article with summurized info about Flutter and React Native.
What is Flutter?
Flutter - it's an open-source UI software development kit created by Google. Using for developing cross-platform web and mobile apps.
Flutter was presented only in alpha and beta versions for a long time. The first stable version was released on December 4, 2018. Examples of Flutter apps: Google Ads, KlasterMe, Reflectly, Xianyu by Alibaba, Postmuse – Instagram photo editing app, Hamilton, Lunching, Pairing, Watermaniac, Cryptograph.
Pros of Flutter:
- Middle speed of development, which saves time and effort. It's a cross-platform development so that's allowed using the same code base for building simultaneously iOS and Android apps. This helps to speed up the whole process of the development.
- The "hot reload" feature allows making changes in code and receiving the result in the app preview, without recompiling the code. This helps simultaneously fix bugs, changing UI and other features at the same time.
- Full customization & fast rendering thanks to Flutter's layered architecture. It gives you control over every pixel on the screen and lets you overlay & animate graphics, video, text and controls without limits.
- You can also use Flutter for Web. For checking how native controls work it offers proper documentation- What's more, it also separates UI from native controls, which eliminates a lot of nuances and errors made by smartphone manufacturers. These might not happen too often but are difficult to omit with native development. Separate UI also means having a unified view of all system versions without an effort.
Cons of Flutter:
- Flutter is still an immature framework, that's why it's still unstable. That means a number of more or less problematic issues remain, along with a lack of more advanced features that leverage the capabilities of operating systems. Many of these features are not yet supported, with plenty of libraries being in the pre-alpha stage and showing limitations when comparing them to native counterparts (i.e. Google Maps).
- Dart language is also pretty immature. The existing functionality are not exactly well-refined. If we compare it to Kotlin or Swift it's the step back.- The size. Apps that are build using Flutter are large. They occupy a lot of space, take a long time to update or download.
- The difference between Native and Flutter components. Flutter doesn't create native components. It is represented in different versions of the system where text fields or buttons are different one from another, yet stay the same in Flutter.
- There are no documentations or recommendations that can be problematic during the dev flow.
- Dart language is fast-changing, which creates a problem if long support of the source code.
Pros of React Native
- Faster to Build
- One Framework, Multiple Platforms
- Fast Refresh
One of the top React Native pain points was that the Hot Reload feature was broken. Most developers had it turned off as it was unreliable. The response to these complaints is Fast Refresh. This tool fixes all the issues that Hot Reloading has and provides a great developer experience that speeds up both building new features and bug fixing.
- Smaller Teams
- Fast Applications
- Simplified UI
React Native is solidly based on creating a mobile UI. In native development, you will need to create a sequence of actions in the application. RN employs declarative programming in which such an order of implementing actions is obsolete. As a result, it is much easier to spot bugs on the paths a user can take.
- Large developer community
Cons of React Native
- Compatibility & debugging issues
Despite React Native is used by top tech players – it's still in beta. Your developers might come across various issues with package compatibility or debugging tools.
- Lack of Some Custom Modules
Lack of some components or underdeveloped. Perhaps you won't have a problem with that, as the majority of custom modules you need are available, well-documented, and working properly.
- Native Developers Still Needed
Implementing some native features and modules necessitates having detailed knowledge of a particular platform. The lack of out-of-the-box support for many native app functionalities (e.g. push notifications) used to be a significant issue with React Native development.
As the community grows, more and more open-source libraries provide easy access to native platform features. Nevertheless, the implementation of some more advanced features might still require help from iOS and Android developers. Their input depends on the complexity of your project, but you need to bargain for them when kicking off with React Native. This might be an issue for small teams, in which developers don't have any native mobile experience.
Which is better: Flutter or React Native?