Flutter Could Be Xamarin’s Next Big Competitor

Flutter is a new SDK from Google, still in Alpha stage, that lets you build apps for Android and iOS. Flutter is unique in that while it allows access to native APIs, it doesn’t use native UI elements. Everything is drawn on a Skia canvas.

This is how Flutter works at a high level. Using Dart, you use components that draw on a Skia canvas. What ever platform Skia can run on, theoretically, so can Flutter.

  • Uses Dart as programming language
  • Draws on Skia Canvas
  • Same UI, on all platforms

Skixam

To delve deeper into how this would play out in the Xamarin.Forms world, I quickly created a proof of concept called Skixam, that takes a Xamarin.Forms app and draws it on a Skia canvas, instead of using the native UI elements. It shows that Xamarin.Forms could have Skia as a platform.

Flutter’s Benefits

  1. A single tool can show how it looks on either platform, since it looks identical.
  2. Only one renderer needs to be written. It can then be run on any platform, where Skia works.
  3. Faster UI drawing times, as Skia was designed for high performance, visual layouts.
  4. Skia could move to newer platforms quicker than Xamarin.
  5. Fewer platform specific bugs.
  6. Ability to create any element you want, rather than being restricted to the platform UI.
  7. Easier to add complex animations to elements.

Flutter also has weight behind it, because it is backed by Google, and even recently acquired long term Microsoft employee, Tim Sneath to work on this framework. It’s early stages, and it has such a long way to go, but even I can see it’s potential, provided they execute correctly.

The World Xamarin Came From

Native Look And Feel. A commonly spoken phrase, that used to be the shining selling point of Xamarin. We can have an app that looks native on each platform, but share significant amounts of code, even the UI.

This is fast losing relevance, among Xamarin.Forms applications. Today clients are less focussed on making an app look native. They get UX/UI designers to come in and develop how they want the app to look. They don’t make tweaks for each platform, then they want the app to look like this on ALL platforms.

I spend more and more time now, diverting from the native UI look and feel, to match exactly across platforms. Users of the app aren’t complaining, and I see it is becoming more common place, especially if you look at apps like Facebook, Instagram and other big name apps. Each of those apps look almost identical on each platform. UI designers are starting to push back on platform styling guidelines and say they are only guidelines, and a lot of the time, not the best approach.

If Xamarin.Forms took the Skia approach, and focussed on a consistent UI across platforms as a platform, it could very well take the advantage away from Flutter.

Summary

Xamarin isn’t going anywhere, Flutter looks like it could pick up a lot of indie and small dev shop movement, leading the way to larger companies adopting it down the road. If Xamarin.Forms also offered Skia as a platform, along with its existing ones, it could negate the Flutter advantage, and allow it to move to newer platforms, quicker. Xamarin could still continue to work on platform specific UI’s if they desired to, Skia would work along side.

Tie this together with the existing SDK Bindings and Tools that Xamarin already offers, it could be the next step Xamarin takes to secure it’s position in cross platform mobile development.


XAMARIN.FORMS MONTHLY NEWSLETTER

JOIN 1,200+ SUBSCRIBERS

  1. Don't miss out on updates
  2. The latest info from this site, Xamarin and the community
  3. Unsubscribe at any time*

* We use MailChimp, with double opt-in, and instant unsubscribe

Microsoft MVP | Xamarin MVP | Xamarin Certified Developer |
Exrin MVVM Framework | Xamarin Forms Developer | Melbourne, Australia

11 Comments

  1. Lex Li

    With so many framework out there, I don’t think Flutter gives a “surprise” at all. It would be a good competitor as it comes from Google, and we can see how well it would grow to be. I personally do not think point 1 and 5 are benefits (like I blogged a while ago on similar approaches).

    1. Adam Pedley

      The previewer for Xamarin is still early and they have to develop it for each platform. Having one previewer that just shows you exactly how its going to look, with out the platform changing it slightly, would be a real advantage.

      Point 5, on fewer platform bugs is a huge issue. A lot of time solving issues in Xamarin.Forms at the moment, is normally finding out why it isn’t working in Android but it is in iOS or the other way around.

  2. Nadjib Bait

    I totally agree with the points in this article. If we take all major apps (Facebook, Twitter, Netflix, Instagram, Spotify…) they all look pretty the same on all platforms, and most of them don’t really respect the design guides of each platform. I also think that Forms future could (should?) be based on a unique rendering engine (Skia/Sharp is good), it’ll make things move a lot faster than now, and it’ll be a lot less headache for the engineers.

  3. Andrei

    I disagree. Flutter might seem like a serious contender, but I don’t think it will take off. Xamarin is much more mature and it has issues in terms of adoption, and the C# dev pool is much larger than Dart’s. Things are not that simple. Native mobile devs still have a lot of work despite Xamarin or React Native just to mention few of well known mobile dev platforms.
    Second, you can create custom UI with SkiaSharp in Xamarin Forms too. You want a circle button? Sure. You want some fancy custom header on the user profile page? No problem. Fancy graph?
    There are some accessibility issues with this approach however but for companies profile which choose to save money by Xamarin Forms, it’s not a problem.

    1. Adam Pedley

      Those were my initial thoughts as well. I thought Xamarin is too far ahead, Flutter is too late to the game, and it’s using Dart, so will most likely fall flat.

      But actually having Skia as the platform, when I did my quick test, I really saw the benefits. Having a single renderer for EVERY platform, is just a huge time saver, and keeps the UI looking the same on every platform. Having every element drawn by Skia instead of using the platform UI also keeps UI API consistency. I don’t need to worry if a method is supported on the textbox/textview/etc/etc/ control across all platforms. I just code it in.

      This is where Flutter gets a huge advantage. Once they catch up on a single platform, they don’t need to write renderers for each platform, they just ensure Skia works on that platform and everything comes across in one go. Code maintenance is less and so forth.

      While they are behind, their approach gives them every opportunity to catch up within 1-2 years.

      1. Andrei

        Devil is in the details. I’m not eager about this kind of drawing approach for UI. A lot of things need to be redeveloped. Think about list views, date pickers, etc.
        What I dislike the most is some things will not work. If there are platform specific features, it will just not work or it will be very hard to do. You can’t say same thing about Xamarin or even Xamarin Forms. Also, each year OSes get new features. the work it takes for Flutter to bring the new features is more than what it takes for Xamarin

  4. Shimmy

    Does it target Windows? What about web?
    Xamarin.Forms is supporting UWP and has concrete plans on targeting web via WASM.

    Does Flutter get any close?
    Besides, who doesn’t love C# XAML and MVVM?

    1. Adam Pedley

      Not yet. But Skia runs or will run on those platforms. Hence there is nothing stopping it from going there, and really quickly.

      But you are right in that C# XAML and MVVM are awesome 🙂

  5. Philipp

    I cannot stress how good the rendering strategy sounds to me as a Xamarin Forms dev. With XF, it’s sometimes like “death by a thousand cuts”, with bugs and glitches across the platforms. If the renderer just has it’s canvas it draws on, and doesn’t have to respect a million platform-specific gotchas for each individual native element, that’s a huge plus.

  6. Pranshu Aggarwal

    I think its great approach. As I freelance Xamarin developer I know the pain, most of my client wants to create same UI in both android and iOS and creating custom renderer to match that is really painful.

  7. Pranshu Aggarwal

    I think its great approach. As a freelance Xamarin developer I know the pain, most of my client wants to create same UI in both android and iOS and creating custom renderer to match that is really painful.