Flutter - Cross-Platform App Development in Comparison (Part 2)

The world of mobile app development has evolved considerably in recent years, with various cross-platform frameworks dominating the market. In this blog post, we will take a closer look at three of these frameworks: React Native, Xamarin.Forms, or .NET MAUI, and Flutter.

Philipp Manstein — Flutter Developer

May 15, 2024

Cross-platform app development in comparison

Let’s explore the history of each framework and compare the pros and cons of cross-platform development versus native development!

React Native

Meta Platforms, Inc (Facebook) first introduced React Native in 2015, a framework that enables the development of cross-platform applications using JavaScript and React.

Contrary to what development with JavaScript might initially suggest, React does not use a WebView or browser to display the UI elements, but instead renders the platform’s native controls. It therefore offers the lowest common denominator for the native elements. For example, when using the “Button” under Android, an Android button is displayed and under iOS a “UIButton”.

A bridge provides access to the native platform functions. React Native supports the iOS and Android platforms.

Xamarin.Forms/.NET MAUI

Xamarin was founded in 2011 and later acquired by Microsoft. Originally known as MonoTouch and Mono for Android, Xamarin enables the use of C# and .NET for cross-platform app development.

The special thing about Xamarin is that, with the help of the Mono Runtime, the native APIs of the platforms can be used in .NET. This means that no programming language other than C# needs to be used to address native APIs.

Similar to React Native, Xamarin.Forms can also be used to implement a uniform UI for the app in XAML and display the native elements in each case.

The successor to Xamarin, .NET MAUI, was announced during Microsoft Build 2020 and will completely replace Xamarin in May 2024. .NET MAUI follows a similar approach to Xamarin.Forms previously: in addition to a single code base in C#, the UI is also only implemented once in XAML. The native elements of the respective platform are used. .NET MAUI supports the platforms iOS, Android, macOS and Windows.

Flutter

Flutter was developed by Google and presented to the public in 2015. Version 1.0 was released in 2018.

Unlike the previous cross-platform frameworks, Flutter does not use the native elements of the respective platform, but draws the UI elements with its own rendering engine (read more here). This means that the design and behavior of the app are consistent and appealing on all platforms without having to worry about platform-specific adaptations.

The applications are written entirely in the Dart programming language, which is perfect for the responsive user interfaces.

Flutter supports iOS, Android, macOS, Windows, Linux, Web and Embedded platforms.

In comparison - the advantages

All cross-platform frameworks offer the same advantage of requiring only one code base. This saves a lot of time, as the source code of the application only needs to be written once and can be reused for the different platforms. One exception is the platform-specific code, which is written in-house and cannot be integrated via libraries.

The time-to-market is therefore shorter compared to native development. It is also quicker to add features or fix bugs, as the maintenance of the source code is limited to a common basis. With agile development, new business models, functions and applications can be tested more quickly and feedback from users can be responded to. Thanks to the uniform code base, all platforms also remain at the same level of features and do not diverge more and more over time.

In comparison - the disadvantages

A frequently cited disadvantage of cross-platform development is that the behavior (UX) and design (UI) of the apps do not reach the quality of native development. React Native and Xamarin.Forms or .NET MAUI in particular have this problem, as this is where the lowest common denominator of the platforms is found. If an individual design is required, separate UI elements often have to be developed or extended for each platform individually. This reduces the advantage that the code base is standardized, as there are more and more places that are individual for each platform. This is where Flutter clearly scores, as it is detached from the native elements. Flutter uses its own rendering engine, so UX and UI can be implemented uniformly with one code base.

Another disadvantage is that when new platform features are released, it takes some time before they are available in the cross-platform frameworks. This disadvantage is particularly noticeable with Xamarin, as it takes some time for the new functions to become available in .NET. With React Native and Flutter, native features can be addressed via an intermediate layer. It should therefore be carefully considered whenever the latest platform features are to be directly available to app users or many native platform functions are to be addressed, whether the use of a cross-platform framework is the right approach here.

The cross-platform frameworks presented are designed for a uniform layout, i.e. if different layouts are required for different platforms, a native implementation should be considered. Especially if the business logic of the app only makes up a small part of the application.

The larger memory requirements of cross-platform applications are also often criticized. However, it is important to remember that it is only a few megabytes and that the trend towards available storage space on end devices is constantly increasing. However, it can become a problem for the web, as the application should be available as quickly as possible even with a poor connection.

One myth that still persists is that the performance of applications implemented with cross-platform frameworks is slower compared to native applications. Of course, nothing is faster than a native application and in the frameworks mentioned there is an extra communication layer between the application and the operating system, but in reality there is no real difference between the cross-platform frameworks presented and a natively developed application. If the tools and programming languages for development are used incorrectly, bottlenecks occur, but this also happens with native applications.

Conclusion

It can be seen that the advantages of cross-platform frameworks clearly outweigh the disadvantages. However, there are cases where the performance of the app is crucial and/or a close connection to the operating system is necessary, so that careful consideration should be given to whether and how a cross-platform framework can be used.

Flutter in particular stands out positively in many respects with its innovative approach of being detached from the operating elements of the respective platform. That is why we at grandcentrix rely on Flutter and use our many years of experience to successfully implement app projects in the IoT environment.

For more information, we recommend the official Flutter website: Flutter - Build apps for any screen

Do you have any questions or would you like to start a project with us?

Michael Bischof — Competence Manager HCI

Hi, I'm Michael. Are you wondering whether Flutter is the right tool for you? Feel free to contact me by e-mail.