What are the big cross-platform contenders?
The community behind cross-platform mobile development has grown and many new options have emerged which outperform the simple outdated HTML approach. Two of the big contenders of this kind of development are Flutter and React Native.
Each framework has its unique architecture to build apps, so they each have their pros and cons. While native apps offer superior user experience and performance, cross-platform frameworks are designed to save costs and speed up development. Let’s take a closer look at them.
What is Flutter?
Flutter is Google’s open-source development kit to create 2D cross-platform apps. It’s based on the programming language Dart, also developed by Google. The application is compiled ahead-of-time into native ARM code which results in a better performance. Flutter is not supposed to be a wrapper on top of iOS/Android but draws the UI from scratch using a C++ Library called Skia (https://skia.org). The Flutter team promotes it as an efficient tool for prototyping because of its hot-reload functionality. Developers who are familiar with OOP concepts can quickly adapt to Dart/Flutter without much mobile experience.
What is React Native?
1. UI & UX
There are different ways one can go about designing your app: either by following the guidelines of each platform and thus keeping the user in a known environment or going for a unique custom design to represent the brand and letting your product stand out. The latter can be a more or less viable approach depending on the purpose of the app and your company brand.
Among the most important factors is certainly performance. Native development has the advantage here because it is the option that is most optimized for the respective platforms (if developed accordingly). But how do the cross-platform approaches fare? Flutter is compiled into native ARM code, which prevents any major performance issues. Likewise, the Skia framework used to render the UI is also fast and has no drawbacks in comparison with the native one. In React Native, real JS code is passed through and converted during runtime, which leads to some inevitable overhead and an impact on the performance. It’s been shown to have greater demands on the CPU compared to Flutter and native, and both cross-platform approaches require a bit more memory.
3. Productivity & Maintenance
Perhaps one of the most relevant aspects from a financial point of view is the main selling point of cross-platform development, which is that it is supposed to require less resources. However, writing code once and automatically supporting both Android and iOS does not entirely correspond to reality. Developers still have to write a certain amount of platform-specific code or treat the platforms differently. Therefore, while some time can be saved, it also does not cut it in half and having an experienced native mobile team will be more effective than switching to Flutter or React Native. However, if the goal is to have web developers make the switch to mobile development, Flutter and especially React Native can be a very sensible choice given that it builds on skills they already have.
As regards maintenance, the main drawback of cross-platform is a delayed reaction to platform updates. Developers may have to wait until they can start adapting apps to support new OS versions or they might need to wait for updates to the SDK when there happen to be bugs or issues.
4. Native features
While the setup of the team is one of the crucial factors when choosing a development approach, another element that informs the decision process is the fact that features specific to iOS or Android or that behave differently need to be dealt with separately. Other hardware-dependent features like Bluetooth interfaces, however, can be implemented indiscriminately with frameworks like Flutter, which can then prove a much more convenient choice even in teams that would have the resources for native development.
There is a valid case to be made for cross-platform development. It is fully possible to achieve the same look & feel as with native development, which makes it a viable option for independent developers who seek to support multiple platforms and helps web developers to more easily set foot into mobile development.
However, for development teams that have enough resources in terms of mobile developers, native development will remain a safer option, due to the fact that there are no dependencies on other companies and frameworks.