Just over a week ago the Uno Platform released v5.0 which was another significant update, following the 4.10 release that included Adding .NET MAUI Controls to an Existing Uno-Platform Application, and some awesome support for shadows. In this post we’re going to do a wrap up of the release and look at trajectory of the platform.
Bye Bye Xamarin
As you’d expect, since it’s a major version increment, there are some breaking changes. One of the most significant is that the support for Xamarin has been removed. If you’re building for iOS, Android, MacOS, MacCatalyst, you’ll have to switch to using the net7 (and soon to be net8) targets (net7.0-ios, net7.0-android etc). Luckily since the majority of the APIs you’d be using in your application actually come from Uno.UI or Uno.WinUI, switching to the new targets will likely be quite straightforward. You’ll need to create a new .Mobile single project, which will replace your Droid, iOS, MacOS and MacCatalyst projects.
Whilst we’re talking about migrating code, if you haven’t already transitioned off Uno.UI and onto Uno.WinUI, now is probably the time to do it. If you’re still targeting UWP we recomment at least setting up a parallel WinAppSdk/WinUI target and determine if there are any limitations that would prevent you from migrating. If there are, don’t forget to raise an issue over on the WinAppSdk GitHub repository.
Platform
Originally I was going to cover off the main features of the 5.0 release but I think the announcement blog post covers this and there’s plenty of documentation that goes into specifics of things like c# markup and Hot Reload. Instead it’s worth exploring the bigger picture and vision that the Uno Platform is working towards.
At the core, the Uno Platform is a technology that supports the creation of native applications from a single codebase for desktop, mobile, web and embedded. Like other cross-platform, or multi-platform, technologies such as .NET MAUI, Avalonia, Flutter, ReactNative, this includes an abstraction layer that allows for the majority of the code to be written once and for applications to be built for each platform. There’s also a core set of control that can be used to create the visual aspect of the application (see Controls for WinUI and the Uno Platform, for built in and third party controls).
Beyond the core platform, the Uno Platform an entire suite of components that developers can use to help them build better apps, faster.
Capabilities
Wrapping around the Core there are components that level-up the platform, giving developers options for how to build their applications.
Hot Reload – Make changes to the application when running in debug mode and see them being reflected in the applicaiton without having to restart the application (more)
Themes – Pick between Material and Fluent themes as a starting point for the style of the application (more)
C# Markup – Write the UI for the application in C# instead of XAML (more)
Lightweight Styling – Customize the appearance of XAML controls by overriding their default brushes, fonts, and numeric properties (more)
.NET MAUI Embedding – Embed .NET MAUI controls, both standard and third party, in the Uno Platform application (more)
Productivity
The next layer out is components and tools that make it easier and quicker for developers to build quality applications.
Figma Plugin – Design your application using the Uno Platform Material Toolkit for Figma and then extract XAML or C# Markup to use in your application (more)
Toolkit – Control library for building applications for mobile, desktop and web (more)
MVUX – Reactive style framework as an alternative to using MVVM (more)
Navigation – Region based navigation framework that provides a consistent abstraction for navigation that can be used from XAML, code behind or from within a viewmodel (more).
Extensions – Configuration, Logging, Dependency Injection and others, that extend the Microsoft Extensions library (more)
Resizetizer – Specify icons, splash screen image, and images once and have them rescaled appropriately for different resolutions (more)
Uno-Check – Validate your environment is correctly setup for developing Uno Platform applications (more)
Templates and Wizard – Get starting with a new application created from the Uno Platform solution template either via CLI with the dotnet new template or the Visual Studio Template Wizard (more)
As you can see from this list, the Uno Platform is not only providing the core technology for building multi-platform application, they’re also working to build tools that will reduce the time taken to build, whilst increasing the quality of, applications.