Flutter VS React Native, Xamarin, Native Development: Major Pros and Cons
Created: 22 Feb 2019
- Category: Software development
When starting a mobile application development project there is always a question - is it better to opt for cross-platform development or stick with native? Many choose cross-platform development because it allows having just one development team for all platforms, accelerates the process of development, and cuts costs.
There are a number of frameworks, SDKs, and other tools for cross-platform mobile development, and choosing the right one can get difficult, as well as deciding between native and cross-platform development approach.
To help you make a choiсe, in this article we will examine a new member of cross-platform development community Flutter SDK and compare it to two popular technologies - React Native and Xamarin, as well as to native development. Mobile development community pays a lot of attention to Flutter development right now as this SDK promises unique benefits that other SDKs cannot provide. Yet it has its own disadvantages, which we will examine too.
Flutter VS React Native
React Native may be the strongest contestant here. Comparing to Flutter, it has a long history and a larger community along with wider adoption. But even such a popular and solid technology can be dethroned by a budding rookie.
Pros of Flutter
In addition, applications built with Flutter are compiled with C/C++ libraries, which resemble machine language and provide better native performance. Note that the whole application is compiled that way, not just UI elements.
Google is famous for its exhaustive documentation, and Flutter's one is not an exception. The documentation is thorough and very useful for both experienced developers and junior specialists.
Also, there is a large community of enthusiasts who create tutorials and complement documentation, so that newcomers are never puzzled.
Design standards for Android and iOS, Material Design and Cupertino respectively, are also built in so that in terms of the appearance of applications you are backed too. There is a Skia engine on C++ that has all needed protocols, channels, and compositions at hand.
Cons of Flutter
In terms of ecosystem, React Native is way ahead Flutter. In basic terms, it just had more time to establish tons of packages. But it is still not over for Flutter - the SDK is catching up with the pace and offers a number of core packages for mobile development. The most powerful driver of ecosystem development is, again, the community with its strong dedication.
As the result, Flutter wins because of its better and faster performance, detailed documentation, and an all-inclusive architecture. Yet React Native is better in terms of an ecosystem and development language.
Now we are going to examine the next contestant Xamarin, an open source mobile development framework run by Microsoft.
Flutter VS Xamarin
Both Flutter and Xamarin are open-source and run by large-caps. Xamarin SDK allows for developing cross-platform apps for Android, iOS, and Windows Mobile with a single C# codebase. It also has a Xamarin Testing Cloud for application testing. Let's examine how Flutter and Xamarin are competing.
Pros of Flutter
Convenient UI design
Flutter provides a large number of layouts, widgets, and platforms to create graphic elements in 2D, support animation or different effects. The Flutter's set of widgets is very impressive especially compared to other technologies, including Xamarin. It allows for building interfaces using predesigned blocks that follow Material Design and Cupertino rules, which accelerates UI development.
Xamarin loses this point due to platforms' regular updates. This SDK uses native UI components and has to adapt each time when there is an update. This also makes Xamarin not suitable for UI code reuse.
Better developer experience
Developers love the Hot Reload feature of Flutter. It allows them to experiment with the UI, add and change features, perform better and faster bug fixing without losing the state of the application. Hot Reload just applies the changes immediately and displays them in the UI directly.
Another thing that takes care for developers is the ability to access native features like third-party components and reuse native code in Swift, Java, and other.
Nevertheless, Xamarin also tries to provide developers with useful and handy features like live reload - an equivalent to Hot Reload - yet the majority of them are accessible only via pay subscription.
The integration of third-party components such as libraries is implemented in Flutter way better than in Xamarin. Thou Flutter lacks such libraries at the moment, the number still rises and Flutter's ability to integrate third-party components is better than Xamarin.
Cons of Flutter
New programming language and low code reusability
As said before, Flutters allows for UI code reusability. But beyond that, the situation is not so bright, as Flutter allows developers to reuse up to 70% of the code on average. What is more, its development language Dart is not a popular and widespread one.
Xamarin does a better job here. It utilized C# which is widely used in a development community. Specialists who already work with C# and .NET can easily use Xamarin and reuse about 96% of the code if Xamarin. Forms was leveraged. A Flutter plus Dart bundle does not provide the same level of reusability.
Lack of maturity
The stable release of Flutter was on December 4, 2018. The SDK is still developing and very new to the market of cross-platform mobile development, which can't be said for Xamarin. It has been there for years and has matured - now 7.4% of professional developers use Xamarin.
Also, there is no way to know whether the SDK will be popular and useful in the future, hence no way of knowing if it is worth migrating to Flutter completely.
To sum up, Flutter wins again because of UI design benefits, better and more pleasant developer experience, and a higher level of integrability with third-party components. But let's not forget that it has a lot to improve in terms of a programming language and code reusability, and a level of maturity.
And now we can eventually compare Flutter cross-platform development with the most solid approach - native application development, which implies creating a separate application for each platform.
Flutter VS Native Development
Many native developers are skeptical about cross-platform development. They report experiencing troubles with scrolling speed and button behavior, which both work perfectly in native apps. When Flutter appeared the developers were skeptical again because of an additional problem - this SDK was new and not yet mature, which could cause even more performance issues. But specialists who tried Flutter often change their minds.
Pros of Flutter
An obvious but important benefit of cross-platform mobile development on average is having to code once and run it everywhere. It cuts development, design, and testing costs and saves time. Flutter provides developers with Dart to code cross-platform apps. Dart is a language that Google uses for its inner projects and is easy to learn for those who are already familiar with structured languages like C or Java and object-oriented programming.
When there is one codebase for several apps QA engineers do not have to test these apps separately - just check how the codebase performs for all the apps and they are ready to go. This also cuts costs on testing and allows for hiring a smaller development team.
Cons of Flutter
Since the technologies developers use for native development are platform-specific, the native code of mobile applications gets full access to the target device's operating system and functionality. The easier the interaction between the app and the device and operating system, the less the delays between requests and responses, which results in faster app performance. This is the most evident when rendering graphics or other media content. Building native apps also reduces the risk of app crashes and freezes.
But note that Flutter is considered to provide a native-like performance nearly indistinguishable from apps written for one target platform only.
Better positioning in application stores
Native apps provide users with excellent performance which results in high-quality user experience. Application markets value user experience and give good applications a higher positive rating which leads to greater visibility in the store.
There is no approach that trumps the another, and developers should choose whether they value faster development in terms of one codebase for all apps and less testing, or a better performance and app market positioning. The choice should be tailored accordingly.
And the Winner Is
Flutter is definitely a technology you should try for your next cross-platform mobile application. It has lots of benefits over other popular technologies and can beat a native development approach, but one should also consider the drawbacks.