Migrating Uno Platform Applications from Native to Skia

With the release of Uno Platform 6.0, the platform has taken a significant leap forward in performance, developer experience, and rendering power. Featuring a unified Skia-based renderer and a new, more efficient hosting model, it’s the perfect time to upgrade your cross-platform .NET application and take advantage of these improvements.

This blog covers the most common migration path, as with any major leap forward, Uno Platform 6.0 includes some breaking changes. For a detailed overview of all changes and manual steps that may be needed, refer to the migration guide.

The Starting Point: A Standard Uno 5 App

For the purpose of this blog, we assumes you’re starting with an existing Uno Platform 5.x application, which is the most common scenario for developers currently using Uno Platform.

It uses separate host builders for different platforms (SkiaHostBuilder for Windows, UIApplication.Main for iOS) and the default rendering pipelines.

Our goal is to update this app by:

  1. Updating to the latest Uno.Sdk. (v6.0.146 at the time of writing)
  2. Unifying all platform heads to use the modern UnoPlatformHostBuilder. (*With the exception of Android, where we still use the NativeApplication and ApplicationActivity.)
  3. Enable the new, high-performance Skia rendering engine.

Step 1: Update the Uno SDK

The first step is updating the Uno.Sdk. The easiest way is to update the version of the Uno.Sdk in your global.json.  

To upgrade the Uno.Sdk, you can open the global.json file and update the <Uno.Sdk> property directly.

				
					{
  "msbuild-sdks": {
    "Uno.Sdk": "6.0.110"
  },
  "sdk":{
    "allowPrerelease": false
  }
}
				
			

The Extension Method

Alternatively, open your solution and check that your extension is up-to-date, and it will then detect if you’re on an older version and present a notification in the Solution Explorer:

“The Uno.Sdk 6.yy.zz update is available…”

Simply click the Update button and reload your project, the Uno.Sdk property in your application’s main .csproj file will be automatically updated.

You can find the latest stable version on the official Uno.Sdk NuGet page.

Step 2: Migrate to the Unified Host Builder

A core architectural improvement in Uno Platform 6 is the new, unified Application Host Builder. This provides a single, consistent way to initialize your application across all platforms (again with the exception of Android).

With the SDK updated, our next step is to align each platform’s entry point with the new host.

For Desktop (Windows)

We’ll replace the legacy SkiaHostBuilder in Program.cs and switch to the new, faster Win32 rendering target, which removes the old WPF dependency.

				
					

// Before:
using Uno.UI.Runtime.Skia.Windows;
var host = new SkiaHostBuilder().UseWindows()...

// After:
using Uno.UI.Hosting;
var host = UnoPlatformHostBuilder.Create().UseWin32()...
				
			

For iOS

On Apple platforms, we move away from UIApplication.Main to the cleaner host builder pattern. This centralizes app configuration.

				
					

// Before:
UIApplication.Main(args, null, typeof(App));

// After:
		var host = UnoPlatformHostBuilder.Create()
			.App(() => new App())
			.UseAppleUIKit()
			.Build();
				
			

For WebAssembly

Similarly, the Wasm head is updated to use an async Main method with the new host.

				
					

// Before:
Microsoft.UI.Xaml.Application.Start(_ => _app = new App());

// After:
var host = UnoPlatformHostBuilder.Create()...
await host.RunAsync();
				
			

With these changes, our application’s startup logic is now clean, modern, and consistent across all targets.

Step 3: Enable the New SkiaSharp Renderer

(Optional but recommended)

The migration is nearly complete.

The final step is to enable the new Skia rendering engine. This is done by adding a single line to your main .csproj file.

				
					<PropertyGroup>
    <UnoFeature>SkiaRenderer;</UnoFeature>
</PropertyGroup>
				
			

With a final rebuild, your upgrade is complete! Your application is now powered by a more performant and modern foundation, ready to take full advantage of the latest innovations in Uno Platform 6.0.

Getting Started

With powerful new tools like Hot Design, a unified Skia rendering engine for pixel-perfect UI, and major performance enhancements with our latest Uno Platform 6.0 release, there’s never been a better time to start building your next .NET cross-platform app.

Start a new project: Ready to build something new? Get your environment set up and your first app running in minutes.

Explore Uno Chefs: Dive into our flagship reference app to see some of our UI controls and best-practice implementations.

Join the community: Share what you’re building and get your questions answered in our Discord server.

Tags: XAML, WPF, Xamarin, UWP, Silverlight, .NET, Windows, C#, XAML

Related Posts

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