Flutter: A real alternative to Xamarin?

The development of apps has undergone a major evolution in recent years. While in the early days of app stores and smartphones, apps were always programmed platform-specifically and from scratch, today there are a wide variety of approaches depending on the application.

flutter apps

Cross-platform app development at Bitforge with Xamarin

As a rule, we develop all our apps with the Xamarin cross-platform framework. There are of course exceptions, but only if this makes more sense from a technological or user perspective. One example is our award-winning LIstory app, which we developed as a progressive web app with native AR elements.

Xamarin is a good choice for us because it has various advantages: it has been on the market for a long time, has a large user base and an active community. Xamarin projects also score points for their high performance and easy-to-create UIs.

Flutter - The new star on the horizon?

About two years ago, Google launched its own cross-platform framework called Flutter. While it was a little half-baked at the beginning, the development kit has been fully functional for a while now and has a rapidly growing following. According to LinkedIn, Flutter was even the fastest-growing skill among software developers in 2019. Time for us to take a serious look at it.

Like Xamarin or React Native (which we will discuss in more detail at a later date), Flutter is also a framework for creating cross-platform applications. Like the other frameworks, Flutter is completely open source and is based on the Dart programming language. The language, which was also developed by Google, is ECMA-standardized and is considered a modern JS alternative.

What makes Flutter good?

A quick look at the website immediately shows what the main focus is at Flutter: it is comparatively easy to create beautiful, fluid (keyword 60 fps) UIs in a relatively short time. The framework scores with native performance and an extremely flexible UI. Another pleasant feature is that the project structure can be adapted to the developer’s project requirements or preferences.

One of our favorite features is the hot reload: This makes bug fixing in particular much more efficient and allows changes to be viewed directly in the emulator or on the device. Flutter’s Hot Reload is clearly superior to Xamarin’s Live Reload, as not only the UI but the entire state of the app, including data, is loaded and displayed.

Differences to other cross-platform frameworks

What is particularly relevant for developers is that the UI is coded and that OS-specific functions are integrated via “plugins”. The “platform view widgets”, which are used to build device-specific styles and help to create a native look, are cool. At first glance, it seems as if there is a suitable widget for everything, making third-party libraries superfluous.

What the competition does better

For all its beauty, not all that glitters is gold with Flutter. Flutter apps tend to be rather heavy and therefore present developers with challenges. The idea of having to delete some of the beautiful animations or compress images to the pain threshold in order to achieve “okay” app sizes is particularly unpleasant.

Xamarin is also clearly superior when it comes to code reuse: while Xamarin normally allows well over 90% of the code to be reused, this proportion is significantly lower with Flutter. The problem could be solved by building and reusing your own custom widgets. However, the platform-specific code must be written in the platform-specific language (iOS: SWIFT, Objective-C / Android: Java, Kotlin).

What kind of apps is Flutter suitable for?

From our point of view, the ideal Flutter case is a beautiful, UI-centered 2D app with not too much functionality. There are some great examples on the Flutter website. The Philipps Hue app is particularly suitable, where the product, UI of the app and Flutter fit together perfectly.