Build together, debug together. Join the community on Discord.→

5.3 Release: Full Rider Support and 350+ Enhancements

Hello, Rider lovers! We’re bringing over 350 additions to Uno Platform in this release, with the standout being official support for JetBrains Rider. Rider support has been a top request in our recent developer surveys, and we’re excited to deliver this highly anticipated feature!

In this release, we’re also shipping an improved Hot Reload experience, two new UI controls (ItemsView and SelectorBar), and new font options. Additionally, we’ve added support for SkiaSharp 3 Previews, further expanding your development toolkit.

We’ve also spent significant effort into further simplifying Uno Platform versioning, allowing you to focus more on coding and less on managing NuGet packages. Furthermore, we continue to support .NET 9 Preview releases while retiring support for .NET 7, which Microsoft no longer supports.

Important update for Visual Studio users: please make sure you update Uno Platform VSIX or you could start seeing errors like outlined in this service announcement. 

Let’s dive into the details of this release!

Rider Support

We are excited to announce the official support for Rider, with a new extension on the JetBrains marketplace. So far developing Uno Platform applications with Rider was possible, but admittedly the setup required manual steps which made this process rather tedious. Starting this release, the development experience Rider developers have is on par with that of Visual Studio and VS Code developers. 

What this means in practice is that you can enjoy the full set of developer productivity enhancers such as C# and XAML Hot Reload for Uno Platform apps and debugging, and for the rest please refer to our docs for full list of supported scenarios. 

Here’s what a solution looks like in Rider:

Alongside, the Uno Platform dotnet new templates are updated to support Rider; make sure to use the Live Wizard to get started. If your project was created prior to Uno Platform 5.3, you can apply the upgrade steps to get your app running.  

Hot Reload UI

Hot Reload is a powerful tool, and we’re further improving the developer experience to get insights into what the Hot Reload subsystem is doing. 

We’re introducing a visual indicator to help you further monitor changes while developing. It displays new information every time Hot Reload is triggered. This indicator is enabled by default in debug mode for applications created using the template. 

This feature is available on all IDEs for all targets that Uno Platform supports. WinAppSDK already has its own hot reload indicators; we’re not expanding the experience here. 

If its location is not appropriate for your app, you can move it around using the handle. You can disable it using the EnableHotReload(false) parameter in App.xaml.cs. 

While working on your app, each time a hot-reload is triggered, a toast appears to indicate whether the changes were correctly applied and, if so, which C# classes or files have been modified. 

You can also view advanced information by clicking on the icon, to see the history of changes in your application since it started. 

Hot Reload Documentation
You can browse our Hot Reload documentation for more information about this feature.

Simplified Versioning

Following the single project support in release 5.2, we’re now providing a single NuGet SDK which contains all the required references to the components of Uno Platform. This way, there’s only one version to upgrade and going back to a previous release (down to 5.3.x) becomes easier. 

If you’re upgrading from Uno Platform 5.2, you can remove those Uno-starting “Version” lines from your “Directory.Build.props”: 

Updating the “global.json” file is the only modification to make to change the Uno Platform version. In Visual Studio 2022, we’re now including a new banner to request a fast Visual Studio restart: 

Note that other IDEs do not need a restart, the change is applied immediately and you’ll only need to wait for the NuGet packages to restore. 

The new templates have now removed the remaining individual packages versions from “Directory.Build.props”. Note that individual Uno Platform packages can still be updated manually. You can follow our upgrade steps to get started. 

New default font on all platforms

This release introduces the support for a new default font for all platforms, using Open Sans. While the default text font on WinUI is Segoe UI, this font is not available on macOS, Linux, or Browsers running on macOS or Linux. Open Sans is similar to Segoe UI, and fits with the Fluent theme provided by WinUI.

In order to get a consistent experience across targets, Uno Platform 5.3 or later automatically sets the default text font to Open Sans by using the Uno.Fonts.OpenSans NuGet package. This font is used on all targets except Windows App SDK, where Segoe UI continues to be used.

				
					{ 
      "font_style": "Normal", 
      "font_weight": 300, 
      "font_stretch": "Condensed",

      "family_name": "ms-appx:///Uno.Fonts.OpenSans/Fonts/OpenSans_Condensed-Light.ttf" 
    }, 

    { 
      "font_style": "Italic", 
      "font_weight": 300, 
      "font_stretch": "Condensed",

      "family_name": "ms-appx:///Uno.Fonts.OpenSans/Fonts/OpenSans_Condensed-LightItalic.ttf" 
    } 
				
			
Default Fonts
For more information about the new default font, visit our fonts documentation.

Variable Fonts Support 

To get this new font available on all platforms, we’ve added the support for multi-file fonts, as well as variable fonts. Variable fonts files are containing multiple characteristics like weight, width, italic, … that a font rendering engine can use automatically. While some fonts are provided in a single file for all characteristics (Google’s Inter), some don’t (Open Sans). 

Those multi-file fonts are cumbersome to use in WinUI, as you’ll have to change the FontFamily based on the FontWeight, for instance. To get around this, we’re introducing the ability to specify a font manifest. This allows specifying where a single variable font file can be used (the Web) and where multiple files may be used (Skia Desktop). Once a manifest is detected by Uno Platform, it will automatically determine the best font file to use for the text to be shown, and you’ll only need to specify a common file in the font family definitions. 

Here’s an example of the manifest file for Open Sans: 

				
					{ 
      "font_style": "Normal", 
      "font_weight": 300, 
      "font_stretch": "Condensed",

      "family_name": "ms-appx:///Uno.Fonts.OpenSans/Fonts/OpenSans_Condensed-Light.ttf" 
    }, 

    { 
      "font_style": "Italic", 
      "font_weight": 300, 
      "font_stretch": "Condensed",

      "family_name": "ms-appx:///Uno.Fonts.OpenSans/Fonts/OpenSans_Condensed-LightItalic.ttf" 
    } 
				
			
Custom Font Manifests
You can find more information about custom font manifests in our documentation.

SkiaSharp 3 Preview support

SkiaSharp is evolving to support newer versions of Skia! We’re following along by adding support for SkiaSharp 3 Previews, while keeping compatibility with SkiaSharp 2. 

You can test the SkiaSharp previews by adding the following in your Directory.Build.props: 

				
					<PropertyGroup> 
   <SkiaSharpVersion>3.0.0-preview.3.1</SkiaSharpVersion> 
<PropertyGroup> 
				
			

Note that dependent third party packages may also need to support SkiaSharp 3. 

WinUI ItemsView Control Support

The ItemsView control is a versatile UI component that displays a collection of items in a customizable layout, supporting dynamic item arrangements, smooth scrolling, and efficient virtualization. As of 5.3 release this control is now available for Uno Platform desktop applications (Mac, Linux and Windows) ensuring a consistent UI/UX across all platforms. We are currently working on bringing support for this control to non-desktop Uno Platform targets. 

WinUI SelectorBar Control Support

Skia Desktop targets are now also getting support for the WinUI SelectorBar control which utilizes ItemsView. It is a user-friendly UI component that allows users to select from a set of options, typically displayed in a horizontal or vertical bar. We are working on bringing this control’s support to other Uno Platform targets as well. 

.NET Support update for .NET 7 and .NET 9 Preview

Since .NET 7 is now officially out of Microsoft support, we are stopping support for .NET 7 too and have removed our binaries for that version from our NuGet packages. When upgrading to 5.3 and if you’re still using “net7.0”, you’ll need to bump your solution to net8.0 or later. 

We have also added support for the current version of .NET 9 Preview 6. 

This release introduces simultaneous support for building binaries targeting .NET 8 and .NET 9 for iOS, Catalyst, and Android. This allows library developers to keep backward compatibility for the previous .NET version while using the latest and greatest .NET SDK. 

We will be moving in lock step with .NET Previews as it nears RTM in November, with the goal of being ready to support .NET 9 on day 0 when it launches.  

Thanks to our contributors

Our amazing contributors have been hard at work updating our documentation to make your development experience smoother and more efficient. Special thanks to:

đź“š Document Updates:

🚀 Skia Desktop Performance Update

We’ve made significant improvements to Skia Desktop performance, thanks to the diligent work of @KevinFerati. Expect a more responsive and efficient experience across your desktop applications.

🔧 CI Improvements

Enhancements to our CI processes have been implemented by @ceddy4395, ensuring faster and more reliable builds.

🖱️ Pointer Tests

Our pointer tests have been updated to improve accuracy and reliability. A big shout-out to @lindexi for these updates.

🖥️🖱️ Skia Desktop Pointers (Multitouch, Mouse) Improvements for Windows and Linux by @lindexi

@lindexi also worked on enhancing Skia Desktop pointers, including multitouch and mouse support, for both Windows and Linux platforms. 

Tags:

Related Posts

Uno Platform 5.2 LIVE Webinar – Today at 3 PM EST – Watch