Uno Platform 4.8 – App Template Wizard, OpenGL Acceleration, .NET 8, DSP Import, Resizetizer and more

We’re excited to announce our second release for 2023, which includes over 200 fixes and product improvements, as well as support for .NET 8 Preview 2

As promised, we’ve been hard at work on the improvements you requested in our 2023 Roadmap survey. One of the top requests was to make the startup experience with Uno Platform as seamless as possible. In response, we’ve introduced a new startup experience designed to make setting up new projects with Uno Platform easier and more flexible than ever before. The App Template Wizard will guide you through setting up your project, allowing you to choose as many or as few pieces of Uno Platform as you desire. So, starting a new Uno Platform project is easier than ever moving forward! 

As with every release, we significantly improved performance across all supported platforms. In addition to multiple in-memory and runtime performance improvements, we are introducing OpenGL acceleration for Uno Islands, which are typically used in WPF modernization scenarios, showing 12x improvement over software rendering. In addition, TextBlock rendering was improved for all Skia backends, showing 5x improvements in common scenarios.  

Let’s take a deeper look at what’s new in the 4.8 release of Uno Platform! 

New App Template Wizard for Visual Studio

We’ve recently introduced a new Getting Started experience in Visual Studio that is sure to delight developers looking for a flexible, customizable app-building process.  

With our new App Template Wizard, you can choose between a blank or default template and customize it to fit your needs.  

You can select your preferred framework, choose the targeted platforms you want to develop for, and decide whether you wish to use the MVVM or MVUX design pattern. Additionally, you can opt for Unit or UI tests and select from a range of Uno extensions and themes 

The new Getting Started experience is designed to give you greater control over your app-building process and help you create the perfect application for your needs.  

To learn more about the functionality of the new Template Wizard, please visit our dedicated blog that covers it in more detail.

Uno Toolkit and Material Theme Improved Initialization

In this release, we are introducing a new, simplified way of initializing the Uno Toolkit and Material theme resources. 

Improved Material Initialization

In the past, when working with Uno Material, developers had to initialize many different theme dictionaries separately in App.xaml or AppResources.xaml. As of this release you can now bootstrap Material/Toolkit into your application with a single line of XAML.  

If you’re only using Uno.Material, the initialization can now be done by adding this single line:

				
					<MaterialTheme xmlns="using:Uno.Material" />
				
			

If you’re using Uno Toolkit with Uno.Material library, it can be done with this single line:

				
					<MaterialToolkitTheme xmlns="using:Uno.Toolkit.UI.Material" />
				
			

Note that, ColorOverrideSource and FontOverrideSource properties can be added to either lines to further customize your app.

You can check out our updated getting started docs for MaterialTheme and MaterialToolkitTheme. 

Roboto Font Updates

In addition, Uno.Material now comes bundled with the Roboto font. If you had this font present in your project, . Initializing the MaterialTheme will be enough for your app to use the Roboto font by default for all Material styled controls.  

Also, the new release includes support for Elevation and Surface Tints through the ControlExtensions Attached Properties  

On Uno Toolkit side, it too comes bundled with the Roboto font. By initializing the MaterialToolkitTheme your app will use the Roboto font by default for all Material styled Toolkit controls.  

New ItemsRepeater Extensions

This new release introduces a new set of attached properties for ItemsRepeater. These helper properties, known as the ItemsRepeaterExtensions provide selection support for the WinUI ItemsRepeater control. The selection feature from this extension supports SelectorItem or ToggleButton (which includes the Chip from Material Toolkit) as the item-template root.  

Lastly, our TabBar control, traditionally displayed horizontally can now be set to vertical orientation, giving you more flexibility when laying out your application.  

Design System Package (DSP) Importing

We continue making further strides to improve productivity by allowing imports of your custom DSPs to Uno Platform-built applications. For example, you are able to use tools like Material Design Theme Builder to create a custom theme that matches your brand, and then import the theme to your Uno Platform application. This has been one of the top asks from our community and we are very pleased to be able to deliver it to you.   

We are planning to bring this feature to our Figma plugin as well very soon, further enhancing integration between our open-source project and additional productivity tooling.  

The DSP Import tooling is automatically setup in our new App Template wizard when the material theme is enabled: 

To Update your App’s Theme Colors

In the Material Theme Builder site you can use the export button to save the Material Tokens as zip file:

When placed in your app, our toolchain will generate a new MaterialColorsOverride.xaml file to show the new colors. 

For more information, read our documentation on  DSP tooling. 

Resizetizer - A New Tool in your Arsenal

resizetizer

An exciting new feature is the Uno Resizetizer, based on a library originally created by Jonathan Dick (.NET MAUI tech lead) that simplifies image resizing for cross-platform apps made with .NET. It allows the use of SVG vectors as source assets and automatically resizes them to every resolution your app needs at build time.  

Resizetizer is a great tool for developers who want to create beautiful apps with less effort. It can generate app icons, Splash Screen assets and images used across the app. We made a version of that library that works for Uno Platform, which is supported across all the platforms we support. 

Take a look at our documentationfor more details on how to get started! 

Uno Extensions

A key differentiator of Uno Platform, and one of our most significant investments, is Uno Extensions, which provides coding blocks for commonly used functions such as Navigation, Localization, etc. One of the most important extensions is Reactive, or as we refer to it MVUX (MVU for Cross-Platform). 

We are enhancing our MVUX framework to give you additional helper features to ease application development. 

MVUX provides easy state management using feeds and states. The FeedView control provides out-the-box state-management support for asynchronous data requests from services and displays responsively to each state, e.g. while waiting for an initial response, if the request runs into an error, no data present, while refreshing, enabling detailed customization for each of those modes. 

As of 4.8 release, you can now easily synchronize multiple loading states into one. 

In addition, lists managed by the MVUX framework now have native support for reordering and multi-selection. With a simple databinding to a ListView.Source, the model will receive an updated list if items are being reordered by the user. The model will also be able to synchronize the selection into a State instance using the new Selection() operator, including support for multiple selection. 

Lastly, FeedView now also supports theILoadable contract from the Uno Toolkit. 

You can take a look at our Reactive (MVUX) documentation to see how to embed them in your project and take advantage of new features available in 4.8. 

.NET 8 Preview 2 Support

For most developers staying on stable .NET 7 ground is a preferred approach. However, to those willing to go to the wild side, we are providing support for .NET 8 Preview 2 today. Furthermore, we continuously integrate with .NET to make sure we are going to be compatible with .NET 8 RTM as close to its ship date, preferably on day 0.  

This version of Uno brings compatibility with .NET 8 Preview 2, with an updated version of Uno.Check 

If you’re running Visual Studio 2022 17.6 Preview 2, you’ll be able to run uno.check as follows: 

				
					dotnet tool install --global uno.check
uno-check --preview-major
				
			

As with any preview software, you’re likely to find issues in both Uno and/or .NET, so make sure to open issues on our repo or on the Developer Community site.  

About Uno Platform

For those new to the Uno Platform, it allows for creating pixel-perfect, single-source C# and XAML apps that run natively on Windows, iOS, Android, macOS, Linux and Web via WebAssembly. In addition, it offers Figma integration for design-development handoff and a set of extensions to bootstrap your projects. Uno Platform is free, open-source (Apache 2.0), and available on GitHub.

Contributor Shoutout

A big shoutout to everyone who worked closely with our core contributor team to make this release possible. 

Next Steps

We are continuing to combine our platform and tooling to make you as productive as possible in using .NET to create cross-platform applications. The best thing to do is try on your own!  

To take advantage of the latest features and updates on Uno Platform, upgrading to version 4.8 through the Visual Studio NuGet package manager is all it takes.  



Or if you’re a newcomer to Uno Platform, our official “Getting Started” guide is still the quickest and easiest way to get started. In just 5 minutes, you’ll be up and running with our platform and ready to build! 

Tags:

Share this post:
Tune in Today at 12 PM EST for our free Uno Platform 5.0 Live Webinar
Watch Here