Join our Discord server for community support and discussions Icon description

Uno Platform 5.4: Perf Improvements and 290+ Issues closed

We are introducing over 290 new additions in the Uno Platform 5.4 release, with a strong focus on performance and resolving issues for our paid clients. Some of you might not know this, but we sustain the Uno Platform open-source project through enterprise support, as described in this blog. This release primarily addresses critical client issues, while simultaneously improving the overall performance of Uno Platform apps. 

Let’s unpack the release! 

Every Millisecond Counts

Performance is king, that’s why we’ve been hard at work optimizing Uno Platform’s core: 

  • We’ve slashed memory allocations by 15% on DependencyObject. For apps with large visual trees, this means snappier performance and happier users.

     

  • Our team dove deep into the DependencyObject’s critical code paths, reducing allocations and easing the pressure on the Garbage Collector.

     

These aren’t just numbers – they translate to real-world improvements in your apps’ responsiveness and efficiency. 

Markup IRootObjectProvider Support

This new feature adds the ability to create Markup Extensions that can interact with their environment. 

If you’ve never used Markup Extensions, those can be used to enhance XAML with advanced reuseable integrations, such as ResponsiveExtension which enhances responsive UI in applications, or AncestorBinding which provides declarative data binding to ancestors of a UI element. 

With access to IRootObjectProvider becomes possible for a Markup extension to browse the visual tree, starting from the root of the XAML file. 

This following example from the WinUI specifications gives a glimpse of this feature. Using the following XAML: 

				
					public class DynamicBindExtension : MarkupExtension 
{ 
    public DynamicBindExtension(string propertyName) 
    { 
        _propertyName = propertyName; 
    }
    string _propertyName; 

    public override object ProvideValue(IXamlServiceProvider serviceProvider) 
    { 
        var root = 
((IRootObjectProvider)serviceProvider.GetService(typeof(IRootObjectProvider))).RootObject; 
        var info = root.GetType().GetProperty(_propertyName); 
        return info.GetValue(root); 
    } 
} 
				
			

The following XAML will display “Page tag”: 

				
					<Page Tag='Page tag' 
      x:Class="App1.MainPage" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:local="using:App52" 
      Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
 
    <Grid> 
        <TextBlock Text="{local:DynamicBind Tag}" /> 
    </Grid> 
</Page> 
				
			

Migrating to Uno Platform 5.4

Ready to update? Check out our migration guide before you migrate:

  • Step-by-step upgrade instructions
  • Key changes in Uno.Extensions
  • New features to leverage

Other Features

We’ve been listening to our enterprise clients and the community. This release includes a host of bug fixes and enhancements that address real-world issues, among them: 

  • Many new automation peers have been added for better accessibility support 
  • Linux X11 Scaling detection improvements 
  • GIF support for Skia Desktop 
  • New AppWindow APIs to get/set the position and size as well as move, resize and show/hide windows of the app

     

     

Each of these improvements contribute to a more robust and reliable platform for your apps. 

3rd Party Support

While not a part of the release, in the past few weeks, we’ve worked on documenting the process for working with ScottPlot. You can now leverage the amazing plotting library for .NET in your Uno Platform applications on all targets Uno Platform supports. ScottPlot gives you a wide array of diverse charts and graphs—line plots, bar charts, pie charts, scatter plots, and more—right in your GUI environments.  

Read more about ScottPlot integration here.

90+ million downloads

Just two weeks ago we crossed 90m NuGet downloads, and as of today we are at 92m! Your continued support, promotion, filing GitHub issues and PRs is what keeps us going. THANKS!

Thanks to our Contributors

None of this would be possible without our community. We’re continually amazed by your contributions: 

  • X11 support Improvements for Windowing and background colors by @lindexi 

Next Steps

We’ve got exciting projects ahead that we can’t wait to share. But for now, we can't wait to see what you'll build with Uno Platform.
Related Posts

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