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
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.
- A single tool can show how it looks on either platform, since it looks identical.
- Only one renderer needs to be written. It can then be run on any platform, where Skia works.
- Faster UI drawing times, as Skia was designed for high performance, visual layouts.
- Skia could move to newer platforms quicker than Xamarin.
- Fewer platform specific bugs.
- Ability to create any element you want, rather than being restricted to the platform UI.
- 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.
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.