Flutter vs Xamarin: A Comparative Guide for Business Owners
Maturity and feature-richness vs. rapid development with a lot of promise. Compare Flutter and Xamarin frameworks from a business perspective: current state, strengths and weaknesses, and future.
- Flutter vs Xamarin: A Comparative Guide for Business Owners
- The Showdown: Flutter vs Xamarin
- Xamarin in Brief
- Flutter in Brief
- Flutter vs Xamarin: Platform Coverage
- Programming Language. Learning for Developers. Community
- Integrated Development Environments (IDEs) and Pricing
- Using Native Libraries and APIs
- Xamarin vs Flutter: UI Design
- Development Speed and Experience
- Xamarin vs Flutter: Testing Capabilities
- What about Fuchsia?
- Final Thoughts
When making an executive decision about enterprise mobile development, there is always a multitude of choices. Is native development the best approach? Or will it be better to capitalize on the code-sharing capabilities and reduced costs of a well-known multiplatform development toolset? Or, perhaps, the choice is between a mature framework and a fresh one that’s taking the market by storm?
This time, we look at Xamarin, one of the seasoned leaders of cross-platform development, and the younger but very promising Flutter. Which one would be better for your business app?
The Showdown: Flutter vs Xamarin
A brief overview of the technological and enterprise backing of Xamarin and Flutter looks like this:
Xamarin in Brief
One of the veterans among multiplatform software development toolsets, Xamarin was first rolled out on the open-source Mono framework back in 2012. Acquired by Microsoft and integrated into the .NET platform in 2016, it is now one of the most prominent and well-developed alternatives to fully native mobile app development for multiple platforms.
There are pros and cons of Xamarin to take into account, but thanks to .NET in particular, it is often the de-facto mobile development framework of choice for teams working with the .NET/C# technology stack. For example, it has been used to create multiplatform apps for UPS, BBC, ACS, Transistor, Microsoft Azure, and many others.
Flutter in Brief
Backed by Google and released in 2017, Flutter is simultaneously one of the newest and most promising multiplatform development platforms on the market right now.
Enthusiastically supported by developers thanks to its highly optimized and streamlined processes, it is yet to reach the full “production-ready” status. Still, as Flutter is quickly approaching maturity, it has already been used to create several official applications by Alibaba, Tencent, Nissan, Reflectly, as well as several Google apps.
Flutter vs Xamarin: Platform Coverage
Both Flutter and Xamarin support multiple platforms. Flutter started as a prolific Android/iOS development toolset, but was quickly announced to expand to Windows, macOS, web, Linux, and other platforms.
Xamarin, as a much more established framework, already boasts stable support of iOS, Android, Windows (UWP), and macOS platforms. Support for GTK#, Samsung’s Tizen, and WPF are at various technical preview and beta stages. It is also possible to create Xamarin web apps via the Uno Platform and Ooui.
Language. Learning for Developers. Community
According to the TIOBE Index, C# is currently the sixth most popular programming language in the world. This is undoubtfully thanks to the massive popularity of the .NET development framework, which includes Xamarin as its part.
While not nearly as widespread as Java or Android Studio, C# is appreciated by many and has its undeniable perks.
The combo of C#, .NET, and Visual Studio IDE often makes Xamarin the framework of choice for first-time mobile developers who are used to the stack. This tendency will also likely intensify with the upcoming .NET 5, expected to bring about further consolidation of .NET framework and its parts, Xamarin included.
Thanks to its integration with .NET and the long history of development with Xamarin.iOS and Xamarin.Android, even highly unique native mobile apps can be created with C# without a single line of Swift or Java code needed. At the same time, XAML and Xamarin.Forms can increase code reusability up to 96% with their native, clean and fairly simple UIs.
With a background in C#/.NET, any new Xamarin developer can learn the ropes in a matter of days. Picking it up becomes a perfectly manageable task also thanks to a variety of options to learn C# and Xamarin, such as through extensive documentation, books, online and offline courses by Microsoft and third parties, Xamarin forums, Stack Overflow, etc.
Dart is yet to get into the top-20 most popular programming languages list, but it’s been picking up steam recently. In large part, the reason for that is Flutter: the interest in the budding framework cultivates more interest in Dart, which isn’t very widely used otherwise (in contrast to Xamarin owing much of its popularity to the massive use of C# and .NET).
The Flutter development community is small but enthusiastic. It’s quickly growing, too, so finding help online and learning one's way around the framework shouldn’t be much of a problem—though at the moment it still can be harder compared to C# and Xamarin.
Integrated Development Environments (IDE) and Pricing
Flutter development isn’t tied down to a specific IDE, so your team is free to choose between Android Studio, IntelliJ IDEA, or Visual Studio Code. All of these options are free of charge and easy to set up.
It’s different with Xamarin. While the framework itself is open-source and comes for free as a part of the .NET platform, buying a license for the Microsoft Visual Studio IDE is pretty much the only way for a commercial project to get going.
If your developers already work with the C#/.NET/Visual Studio stack, that’s obviously not a problem. But when going for Xamarin development for the first time, licensing costs should be taken into consideration.
Using Native Libraries and APIs
Both Xamarin and Flutter support native APIs and libraries, and have access to a multitude of platform-specific features.
Native APIs and Library Support with Xamarin
Xamarin provides a 100% native API access:
Xamarin.Essentials library grants easy access to overlapping native APIs of Android, iOS, and UWP. Abstracted into a set of cross-platform APIs, they can be accessed from shared codebase of Xamarin.Forms and Xamarin Native apps alike.
Xamarin Native allows access to all platform-specific APIs and allows their full use for cases not covered by Essentials.
Native APIs and Library Support with Flutter
Flutter allows limited access to a small number of platform-specific APIs and services out-of-the-box. However, mass creation of available cross-platform APIs is not a priority for the framework. The focus, instead, lies in customizing and flexibility.
For a majority of cases, a Flutter developer would either make use of pre-made Dart packages (reusable plug-ins and libraries) to access native services and APIs, or create their own integrations with platforms via platform channels.
Xamarin and Flutter have very different approaches to UI design.
UI Design in Xamarin
In Xamarin, you use platform-specific native UI components, no more, no less. This can be achieved by creating:
- Completely separate UIs for platform-specific apps, using Xamarin.iOS and Xamarin.Android. The benefit of this is achieving greater fidelity, flexibility, and a completely native look of cross-platform apps. The downside is no shared UI code, which significantly brings down the portability and overall code reusability of your apps.
- A Xamarin.Forms app, using shared native elements and interfaces, and thus achieving code shareability of up to 96%. The downside of Forms is that their capabilities are rather limited, even though they’ve been gradually expanded lately. Still, for many platform-specific and dynamically changing elements, you’ll have to dip into using native or Xamarin Native code.
UI Design in Flutter
With Flutter, there are two sets of proprietary widgets for Android (Material widgets) and iOS (Cupertino widgets) that one can use to design a UI. Flutter doesn’t use native GUI components but creates its own using the Skia Graphics library.
The advantage is that it’s easy to customize existing widgets and create new ones, which allows sharing intricate graphics and animations between platform-specific app versions. The downside is that the truly native look can escape you, and if the native Android and iOS look and feel changes with the next OS update, your app risks looking inconsistent and somewhat obsolete.
Development Speed and Experience
Up until very recently, any developer with experience in both Xamarin and Flutter would have named the development speed and streamlining of Flutter miles ahead of Xamarin’s. All thanks to the Hot Reload functionality that allows developers to immediately see the changes made to the code on a virtual or real device right as they’re coding. Hot Reload is a great feature that boosts productivity as well as aids in quick prototyping, experimenting, and testing.
This year though, Xamarin’s team implemented two similar features, XAML Hot Reloading and Hot Restarting, into their most recent stable release, closing this gap and eliminating one of the clear advantages of Flutter over Xamarin.
Having Hot Reload is absolutely helpful, but when it comes to testing it can only get you that far.
Xamarin has extensive testing capabilities that come with Visual Studio plus an additional testing environment of its own. Xamarin applications can be tested with dedicated unit and UI testing tools, native test frameworks, and third-party tools.
Flutter has a variety of integrated options to run unit and widget tests, as well as integration level checks. It has a flexible and well-documented tooling to create and run highly optimized tests.
What about Fuchsia?
You’ve likely heard about Fuchsia. It’s been making waves: a high-profile project by Google, rumored to become the next big thing in mobile and desktop worlds alike. The platform was designed to not only succeed and supersede both Android and ChromeOS, but also to support all existing Android apps. Combine it with Flutter as the default framework for building new Fuchsia apps, and Google’s upcoming platform starts looking like a major force to be reckoned with in the near future.
It’s still too early to tell for sure, but it might be that Google is aiming to use its fresh new Flutter framework as a way to smoothen the eventual transition from Android and ChromeOS to Fuchsia. To boot, Google might use Fuchsia and Flutter as leg-ups for each other in the competitive fields of mobile app development. If Fuchsia is to be all it’s rumored to become, then Xamarin might be in some trouble, just like React Native, Ionic, and other popular frameworks.
Rumors aside, we don’t really know much about Fuchsia yet. What will it be exactly? Will it become a success? Google has a history of both gigantic hits and miserable flops with their ambitious projects. The tech juggernaut also has a habit of quietly dismissing products that haven’t found massive success, sometimes within a few months from their initial release.
No official rollout date for Fuchsia is in the air, but 2024 is the most speculated-upon date. In mobile development, three to four years is practically forever, so pushing through a plan to mitigate Fuchsia’s launch might seem premature for the Xamarin team right now.
Still, if Fuchsia is to succeed, Flutter will no longer be just another cross-platform development framework but will gain a massive boost in popularity as a native development tool for Google’s new major platform.
As of December 2019, Xamarin still can be considered more stable, mature and well-developed compared to Flutter. For enterprise applications, Xamarin is in many ways an obvious choice, especially for companies with a successful history of C#/.NET product implementation. Additionally, right now Microsoft’s development framework has a better platform coverage when it comes to building apps with a shared codebase.
This doesn’t mean Flutter isn’t worth the attention of enterprise developers. Flutter might be not quite production-ready just yet, but it has an immense potential. Depending on Google’s release schedule for the next couple of years, Flutter might soon become the new leader in both multiplatform and native development. If this turns out to be true, Flutter is going to be very hard to beat, and it might be well worth investing into it early.
Contact Iflexion’s consultants
There’s a new player in the multiplatform mobile development town: Flutter. Here’s how it stacks up against Facebook’s React Native from a business perspective.
Learn about the pros and cons of using Xamarin as your main mobile development platform. All the advantages and shortcomings of ‘near-native’ cross-platform enterprise development laid out in one guide.
Xamarin in comparison to other platforms and whether it's good for particular kinds of projects. Learn the features that every business executive set on finding the best cross-platform development option should know of.
In our Xamarin vs. Cordova comparison, we outline some advantages of each of these two cross-platform development tools for building mobile enterprise apps.
WANT TO START A PROJECT?