Xamarin vs Flutter: 3 Critical Lessons Learnt After Using Xamarin

Xamarin vs Flutter: 3 Critical Lessons Learnt After Using Xamarin

Do you like cross-platform mobile app development but dislike JavaScript?

Have you thought of a Xamarin vs Flutter comparison for cross-platform mobile app development in 2019?

Long before Flutter came into the picture, the only viable cross-platform development tools for mobile apps were JavaScript based React Native and C# based Xamarin.

Most developers, me included, have always expressed dislike of the JavaScript language structure…

…which only left me with Xamarin as the only viable option.

But the rise of the Flutter framework has come to challenge the status quo.

In this Xamarin vs Flutter comparison, we are going to look not only at the differences but also the similarities between Flutter and Xamarin.

I hope that by the end of this Flutter vs Xamarin comparison you’ll be able to decide which platform is best for you.

I’ll also finish this article by mentioning the 3 surprising lessons I learnt after using both Xamarin and Flutter… so stay tuned!

Check out an in depth Xamarin vs Ionic performance here.

Before we dive right in, let’s start by defining these terms.

Xamarin

Xamarin is a cross-platform mobile app development framework, developed by Microsoft, for building iOS and Android apps.

It enables you to build apps with native look and feel for both Android/iOS using only the C# programming language.

Since its launch in 2011, it quickly became popular and is now used for developing apps for macOS, tvOS & watchOS as well.

This makes it sound like a really great tool, right?

Let’s find out.

Flutter 

Flutter is a mobile app development framework developed by Google for building cross-platform mobile applications.

Through Flutter you can build native mobile apps for both Android and iOS platforms using the, relatively new, Dart programming language.

Since its launch in 2017, it has proved to be a viable competitor to Xamarin even though it’s limited to just iOS and Android development.

But does that alone make it a loser?

We’ll establish that in a moment…

Right.

Now that we know what each of these frameworks stand for, let’s dive right into the Xamarin vs Flutter comparison and establish what each has really got for us.

When comparing Flutter vs Xamarin, we’ll stick along the lines of performance, development environment, developer productivity, etc…

Xamarin vs Flutter: Technology Stack

When comparing Xamarin vs Flutter technology stack, let’s look at the particular skills that you’ll need to have to use them.

Xamarin, being a Microsoft based product, runs on the C# programming language.

This means you need to have intermediate knowledge of C# and the .NET framework to be able to develop your apps in Xamarin.

Related:
Xamarin vs Ionic: Why Ionic Framework Became Incredibly Popular
11 Best React Native Courses on Udemy for Developers [2020]

However, Xamarin also enables you to build your apps in F# language… so you have two options.

Flutter framework enables you to build your app only in the Dart language.

The Dart programming language is relatively new and few people have this skill. This means you’ll have to first learn Dart in order to be able to use Flutter.

So Flutter doesn’t present you with an option here.

Even though Dart programming is easy to pick if you already know JavaScript, Xamarin wins because there are already a lot of C# developers out there.

Xamarin vs Flutter: Performance

Let’s now look at Xamarin vs Flutter performance comparison.

Xamarin offers near native performance if you use Xamarin.iOS and Xamarin.Android, but Xamarin.Forms lags a little because of the additional abstraction layer.

It, however, offers Xamarin Profiler, a tool that enables you to spot issues in your code and optimize its performance.

This article here provides techniques for improving your Xamarin app performance.

Flutter also lets your develop mobile apps that have near native performance.

Its engine is fast and efficient and guarantees high performance apps because it doesn’t rely on Webviews or native UI components to render.

There are also a lot of resources for improving your Flutter app performance.

Even though I couldn’t find anything conclusive, demo tests that have been done with simple apps have shown Flutter to outperform Xamarin apps.

Xamarin vs Flutter: Development Environment

Before you choose on whether to developer your mobile app in Xamarin or Flutter, you should know what you’ll need to set up before you start developing.

With regards to Flutter vs Xamarin development environment comparison, we’ll look at which is easy to install without hassle.

Xamarin requires the Visual Studio IDE to work.

This means you first have to install Visual Studio before you can then install the Xamarin.iOS and Xamarin.Android binaries.

Visual Studio IDE is a great tool that provides you with all the features you need.

Flutter installation starts by first downloading the binary for your specific OS from GitHub.

After this you then have to add Flutter to the system PATH, which I often find cumbersome and sometimes annoying…

On the flip side, though, Flutter doesn’t limit you to a particular IDE as you can develop in Android Studio, IntelliJ IDEA etc…

Even though Xamarin limits you to Visual Studio, Flutter installation requests extra steps as well.

Both platforms have great installation documentation though.

Xamarin vs Flutter: Developer Productivity

What do you consider when comparing Xamarin vs Flutter developer productivity?

I would first look at how much time it takes me to learn and start using either technology productively.

Besides that, I’m also on the lookout for particular features in a technology that will make my life easier.

Xamarin, being a C# dependent language, needs good knowledge of C#.

If you are already a C# developer coming from web development with .NET framework, you’ll find Xamarin pretty easy to pick.

In fact, you’ll be able to start developing your mobile app right away.

If you are a complete beginner, these are the best Udemy Xamarin tutorials to get you started.

Xamarin also implements a “hot reload” feature that enables instant updates to your code changes in the view.

It works great but only from the perspective of the UI. Code that changes app logic has to be recompiled though… which takes much more time.

Flutter relies on the not-so-popular Dart programming language.

At its inception itself, the Dart language was a failure, so it means few people already know this programming language.

Even though people with previous knowledge of JavaScript can pick Dart easily, it’s still a new skill you must learn before you can use Flutter productively.

On the flip side, though, Flutter offers a real “hot reload” feature that enables instant code changes updates on the actual app.

This feature alone won the love of developers and has been shown to reduce development time by up to 30%.

So, here is what I think when it comes to Xamarin vs Flutter developer productivity…

If you already know C# you’ll be more productive in Xamarin.

But if you are a beginner to both C# and Dart from scratch, you’ll get productive faster in Flutter.

If you already know both C# and Dart… 

… then you’ll be more productive in Flutter because you can’t argue against its hot reload feature.

Xamarin vs Flutter: UI Components & API

When developing a cross-platform app it is very important that your app delivers a native look and feel.

So, which one between Xamarin or Flutter will deliver a better user experience?

Xamarin leverages native component APIs to render its UI.

This means that you end up with an app that looks exactly the same as that built using a native programming language.

Read this post if you want to know the difference between Xamarin Native and Xamarin Forms.

It is such a mature and stable framework that even has modules in place for rendering native UI components for iOS, Android, macOS, tvOS etc…

So, I’d say Xamarin is best when building an app with a simple UI.

Flutter does not render any native UI components. It instead renders its UI by drawing them in a Skia canvas.

First of all, this means that you can achieve consistent UI implementations in both platforms without much hassle.

Secondly, since you don’t need any platform specific API to render your UI, rendering is much faster while also giving you a lot of customizable widgets.

However, since Flutter does not leverage native UI components, the apps look the same in both platforms.

Related:
React Native vs ReactJS: The 3 Surprising Differences Between Them
11 Best iOS Courses & Tutorials on Udemy in 2020

Now, we both know that this should NOT be the case.

iOS and Android are different for a reason… the look and feel.

Flutter cannot deliver the same look and feel that you’ll get from Xamarin or from a native solution like Swift…

… at least as of this writing.

So the UI of your app will look better on Xamarin than on Flutter.

For an app with a lot of graphic effects or a complex UI, Flutter delivers the best experience between Xamarin and Flutter.

Xamarin vs Flutter: Community Support

Which platform, between Flutter and Xamarin, has great community support?

Community support is great for when you get stuck or need help.

Having great support means you can find fixes to bugs faster which, technically, reduces the development time.

Xamarin, being much older than Flutter, has a bigger community.

In fact, they have their own Xamarin forum, where you can ask anything Xamarin.

I found 39,352 questions on Stackoverflow tagged ‘xamarin’ which attests to the activity of this user group.

Apart from this, there are also numerous open source modules being developed by the community for adding functionality to this framework.

Flutter, too, has developed a community fast.

Even though it started on a losing ground, its community mainly started growing after Google embraced it in 2017.

It also has a special Flutter communication channel for its community, thanks to Google’s hard marketing.

When I checked on Stackoverflow, I found 29,412 questions tagged ‘flutter’ which means it’s playing catch with Xamarin pretty well.

Apart from that, both Xamarin and Flutter have a lot of online courses, tutorials and blog posts for learning.

I wrote another article where I reviewed the best Flutter tutorials to take on Udemy to get you started.

Also, while Microsoft is behind Xamarin, the Google team is behind Flutter.

So, in terms of Flutter vs Xamarin community support, it’s a tie.

Xamarin vs Flutter: Popularity

Talk is cheap!

Who really is using any of these frameworks in production anyway?

Let’s compare Xamarin with Flutter popularity by looking at the tech companies who are already using them.

Xamarin is already used in production by, among others: The World Bank, Picturex, Evolve, JustGiving, Alaska Airlines, Oro, APX, FreshDirect & Novarum DX.

Flutter has been used to build many production apps, including: Google Ads, Reflectly, Hamilton Musical, My Leaf, Kalium, MyValue, Xianyu by Alibaba & Birch Finance.

So, clearly, both Xamarin and Flutter are already being used in production.

This means they are robust and dependable platforms.

Right.

That’s it.

A Xamarin vs Flutter comparison in 2019.

Are you now able to choose the best platform, between Xamarin or Flutter, for your cross-platform mobile app?

Both are great platforms and each deserves a shot.

To finish this Xamarin or Flutter comparison, let me highlight 3 critical lessons I learnt after using Xamarin.

3 critical lessons learned after using Xamarin & Flutter

  1. I learnt that while Flutter doesn’t require a particular IDE, both the installation and development on Xamarin depend on Visual Studio.
  2. Even though Xamarin lets you develop apps for more platforms than Flutter, Flutter beats Xamarin in terms of code reuse across both iOS and Android platforms
  3. I also learnt that even though both Xamarin and Flutter enable you to build cross-platform apps, you’ll end up with bulky apps in both cases.

Conclusion

For a long time mobile app development has been native.

You could only write Android apps in Java and Kotlin or iOS mobile app in Objective C/Swift.

This meant that companies had to keep two separate development teams while working on the same product for both technologies.

Two development teams meant management headaches as well as high overhead costs for recruiting and maintaining both skills groups.

Cross-platform mobile app development, therefore, came like a breath of fresh air to try and make things right.

Through platforms like Xamarin and Flutter, this dream is becoming a reality.

However, cross-platform development for iOS and Android platforms comes with a lot of challenges and we are yet to find a perfect tool for both.

I hope this Flutter vs Xamarin comparison has helped you decide which one, between Xamarin and Flutter platforms, is best for building your mobile app in 2019.

Ideally, I would build an app on both platforms to see for myself their shortcomings…

But since time is a scarce resource, pick one and get started.

You’ll only know by doing.

Have you used either Xamarin or Flutter for developing your cross-platform mobile app before?

Please share your experience in the comments below.

Lerma Gray

Hey, I’m Lerma, a mobile app developer with experience in Xamarin and React Native. I also double in as a freelance tech writer and blogger during my free time. On this blog, I share my experience about mobile app development.

This Post Has 2 Comments

  1. helzeknis

    Since this post was written, it is possible to develop design styles for both Android (material) and ios (cupertino) in Flutter. So your app can match the style of either OS. You can even use Cupertino style in an Android app or vise-versa, Or ccreated something complletely new, it’s up to you.

  2. Ryan

    I have worked with both. I can say that when projects get more complicated, Xamarin is the winner, hands down. The reason? State management, through data-binding and commanding. Literally zero business logic in the UI elements. Even the code-behind the XAML is nearly empty, except to set the binding context. So you can have a master developer create the backend and a graphic artist good at using Blend, and the only thing each has to know is the naming convention and the business requirements.
    With Flutter, while you ‘can’ separate business logic from UI elements, it is far less intuitive.

Leave a Reply