Cross-platform mobile frameworks have become immensely popular in recent years, offering a way to speed up mobile development by eliminating the need for separate iOS and Android code bases.
So, which framework is better for your next mobile project? I’ll be comparing both Flutter and React Native in the following areas: the learning curve required, their performance, and the development experience.
The Learning Curve
The official documentation for Flutter is very extensive, containing detailed descriptions of each built-in widget, as well as a range of tutorials for developers that are already familiar with certain tools.
Screenshot of Flutter documentation
Flutter tends to compile to larger file sizes than React Native does, which may result in larger or more complex Flutter apps taking up more storage space and having longer download times. Additionally, Flutter has limited support for older device versions, only providing support for iOS 11 or later and Android 4.1 or later. This makes it a less ideal choice for developers who need to target a wider range of devices.
The Development Experience
Developing with cross-platform frameworks is a fast-paced process, and both Flutter and React Native offer fast-reload features that allow developers to see their changes within an instant.
Flutter offers built-in debugging and integration testing services, greatly enhancing its developer experience. As well, Flutter features a variety of built-in widgets that are highly customizable, resulting in pixel-perfect UI layouts. In contrast, React Native relies more heavily on third-party libraries in order to achieve the same level of customization. While many popular libraries are well-maintained by companies like Shopify, Software Mansion, and Expo, some smaller libraries may not receive the same level of maintenance.
Overall, I find React Native to have better community support. Since React Native has been around for a long time, many more packages are available, and any issue you may run into has probably already been addressed somewhere on GitHub or StackOverflow. This is not always the case with Flutter, and I experienced this on a previous project while trying to implement a more complex screen transition.
Finally, React Native services include CodePush, allowing developers to deploy app updates directly to its users rather than having to constantly require approval from app stores.
Overall, I believe that the best framework to use is the one that best fits your development background and your needs.
In short, Flutter may be a better choice if you:
- Have experience in native iOS and Android development.
- Require more extensive styling.
- Work best by heavily consulting documentation.
Likewise, React Native may be a better choice if you:
- Want to create a larger, more functionally complex app.
- Plan to update your app frequently.
- Need to target a wide range of device OS versions, including old versions.
I’m excited to see how both frameworks will evolve in coming years, and whether one will eventually become the clear winner. Special thanks to Dan Friyia, Senior Software Engineer at Shopify for providing many valuable insights.
Veronika Sustrova is an Agile Software Engineer at TribalScale. She is passionate about full-stack mobile and web development, as well as supporting underrepresented groups in tech. Outside of work, she enjoys weight training and playing the piano.