Our Discord community is buzzing. Come and join us!

Five is for 5X productivity. Announcing Uno Platform 5.0

Today’s release is a significant step towards creating the most productive platform for building single codebase .NET applications that run on mobile, desktop, and web.

Uno Platform 5.0 brings:

  1. C# Markup out of the box, which supports 1st party and 3rd party components and application-level libraries, mapping directly to the underlying object model.
  2. The first and only Figma to C# Markup export tool!  In addition to developing UI by hand using C# Markup, you can now generate C# Markup directly from Figma designs. Our partners report a 5x productivity increase using this feature alone compared to coding by hand.
  3. New and Improved Hot Reload.  We are very proud of the completeness of our Hot Reload. Whether you are working with XAML, C#, or C# Markup, be it in Visual Studio or VS Code on PC, Mac, or Linux, you can enjoy the exact same productivity benefits.
  4. Improved MVUX (Model-View-Update eXtended) – our implementation of the MVU pattern that allows you to get all the benefits of Reactive/Immutable/Declarative/Asynchronous state management while being fully testable and Hot Reload friendly.
  5. Two New Sample Apps with complete self-guided workshops to help you learn how to build cross-platform applications using Uno Platform, reducing your ramp-up time. 
Come see the launch of Uno Platform 5.0 at .NET Conf 2023
Uno Platform 5.0: Elevate Your Cross-Platform .NET Development with .NET 8 – Thursday, November 16, 2 – 2:30 PST.

Extensibility and modularity in mind

The productivity gain resulting from using all Uno Platform components – across UI, Figma, Extensions, and Toolkit is significantly bigger than the sum of its individual productivity boostsThat said, Uno Platform is built with extensibility and modularity in mind so that you can bring in your own components, patterns, design systems, and more.  

“Thanks to Uno Platform, we were able to leverage the excellent set of developer tools that exists in .NET as well as our team skillset” “The primary attraction for us was the ability to develop rapidly and deploy applications cross-platform, reusing much of the existing business logic between frontend and backend.”
- Francisco Manuel Suárez Grueso, CTO at ADD Informática.

C# Markup for Cross-Platform .NET Apps

You asked; we delivered. A massive bit of feedback from the community has been the need to learn multiple languages to build an Uno Platform application. Now, you can build your entire application using a single language with C# Markup! 

C# Markup provides a fluent-style addition to C# that allows developers to declare the layout of their application. It’s not a new language, and there are no extra types to know to build applications C# Markup. You can use all the same UI elements you’d use to build any Uno Platform application. In fact, if you compare the equivalent XAML and C# Markup, you’ll see they’re almost the same. 

Creating your application using C# Markup, you get the benefits of a strongly typed API, in a similar way that x:Bind can provide in XAML. This means you’ll get intellisense and compile time validation of your code, like styles or converters – spot errors whilst you’re coding. 

C# Markup comes with support for the standard WinUI controls, as well as controls offered by Uno.Toolkit and Uno.Extensions, and you can write applications using either Fluent, or Material, design languages. You can even reference any control from third-party control libraries, by taking advantage of the C# Markup source generator – the vendor doesn’t have to do anything to support C# Markup! 

All the basics that you’d expect to work on are all packaged with C# Markup – Data Binding, Styles, Resources, Template and Visual States. Defining the layout in C# gives you options. You can use resources, converters and commands, but you can also just expose properties, methods and functions that can be called directly. 

C# Markup enables you to create app UI declaratively and still have a clean separation between UI and business logic.  Additionally, C# Markup provides you with this entire API as part of the same namespaces you’re already using for your controls. This means that whether you are using Uno Platform, WinUI or even generating C# Markup extensions for a 3rd party library, there are no special namespaces you need to add to use the Fluent API.

For our work on C# Markup, we have been inspired by the work of Vincent Hoogendoorn. Vincent is a pioneer in this space, enabling many .NET UI Frameworks, including Uno Platform, to have Flutter-like experiences to use C# for creating UIs. Vincent’s plugin continues to work with Uno Platform, and we remain in touch to continue to enable his work, all while offering a C# Markup option specifically suited for Uno Platform’s use case. 

Simple Calc Workshop
The best way to go about trying C# Markup is to follow our Simple Calc workshop.

From Figma Designs to C# Markup with ONE Click

Today, we are releasing the industry-first Figma to C# Markup plugin, aiming to accelerate app development up to five times. It builds on the success of our existing Figma-to-XAML plugin, currently the most downloaded Design-to-XAML plugin in the Figma marketplace. This is our Preview 7 of the plugin, and we expect the RTM version to come very soon in the next release of this plugin.  

To accompany this release, we are releasing a complete, self-paced, free Figma to C# Markup workshop called Tube Player. 

Tube Player Workshop
Build a YouTube-like app in less than a day.

New and Improved Hot Reload

Hot Reload lets you update code into a running app without rebuilding your solution. You can apply changes, fix bugs, create new UIs and add features. The best Hot Reload is the one you don’t notice exists at all! 

With Uno Platform’s Hot Reload, you can: 

  • Work in Visual Studio for Windows or VS Code on Windows/Linux/mac 
  • Use either XAML, C# Markup and C# 
  • Use all the newest supported C# code changes from .NET 8 
  • Get the state of your controls preserved 
  • Update code-behind, add new event handlers, update styles, resources, bindings, x:Bind expressions, DataTempate, Resource Dictionaries, etc… 
  • After the startup of the app, Hot Reload in less than a second 

Checkout our Hot Reload features and benefits document for a comprehensive list of what we bring to .NET developers. 

To showcase the power of Hot Reload, we recorded a video of building a complete calculator UI using only Hot Reload. 

To accompany this release, we are releasing a complete, self-paced, free workshop that takes extensive advantage of Hot Reload called Simple Calc which will get you to build a calculator app over your lunch break.   

Our Hot Reload implementation is different, and while we build on top of .NET and its toolchain, this allows for some unique differences. We’re taking advantage of the ability of Hot Reload to run C# source generators. This enables our XAML Hot Reload to provide the same features as an initial build. For example, this includes the ability to hot reload complex x:Bind expressions

Note that Hot Reload works fully on Windows, WebAssembly, and Skia-based Uno Platform heads. Until a known .NET 8 issue is fixed, iOS, Android, and Catalyst targets use a XamlReader-based hot reload for XAML only. We expect the fix to come with the first service pack for .NET 8, estimated to arrive in December timeframe.  

Improved MVUX (Model-View-Update eXtended)

The initial version of MVUX extension was published a couple of years ago. With this release we are enabling further integration with the rest of Uno Platform such as Hot Reload, C# Markup and Figma.  

Developers familiar with building XAML applications will be familiar with the MVVM pattern that capitalizes on the use of data binding. MVUX bridges the gap between the need to write reactive style applications, where code is immutable and asynchronous by default, and the need to connect to a declarative UI via data binding. 

In this release, MVUX has been improved to take advantage of the improvements made to Hot Reload. You can adjust both the Model and View (XAML or C# Markup) without having to restart the application. In C# Markup, you can use MVUX controls such as FeedView to declare the different states of your application. 

If you need more convincing about the power of MVUX, check out the entire code for the Model for the MainPage of the TubePlayer sample application. This features a state, SearchTerm, for capturing the search input text and a feed, VideoSearchResults, that exposes the search results. The feed reacts to changes in the SearchTerm to load the list of videos from YouTube. There’s a filter to ensure that there is a search term, and the feed is paginated, allowing the UI to progressively load page after page of videos matching the search criteria, as the user scrolls. All this in 10 lines of code! 

And the corresponding views, in both C# Markup and XAML 

C# Markup View
XAML View

Another key benefit of MVUX is all the code you don’t have to write: 

  • No Threading logic – MVUX is asynchronous by default, so you don’t need to worry about what thread you’re running on 
  • No ICommand implementations – just use regular C# methods 
  • No INotifyPropertyChanged – Models are immutable with MVUX handling propagating of updated instances to the UI 
  • No Converters – just write the C# logic you want to execute to transform your data 
  • No virtual DOM – MVUX handles propagating of changes to the UI without creating an entire virtual DOM 

Two New Workshops

Simple Calc (beginner workshop)

The Simple Calc workshop offers a comprehensive introduction to developing cross-platform applications for Desktop, Mobile, and Web using Uno Platform. It focuses on preparing your development environment and providing guidance for Visual Studio and VS Code users. You’ll learn to create a new solution using Uno Platform templates, build your app using XAML or C# Markup, and understand essential architectural patterns like Model-View-ViewModel (MVVM) and Model-View-Update-eXtended (MVUX). Try out the Simple Calc workshop.

Tube Player (intermediate workshop)

The Tube Player workshop teaches how to make a cross-platform app for searching and streaming YouTube videos. This workshop offers a step-by-step journey, allowing you to build a two-part app with a search page and a media player. You’ll learn to set up your developer environment for Uno Platform app development and build a cross-platform app using C# Markup and MVUX. The workshop also covers customization, remote API integration, and customizing the app’s theme. Try out the Tube Player Workshop.

Toolkit and Themes support for C# Markup

All Lightweight Styling resource keys for Uno Themes and Uno Toolkit can now be used in C# Markup through a collection of static helper classes available in the Uno.Themes.WinUI.Markup and Uno.Toolkit.WinUI.Markup NuGet packages.

For more information on C# Markup support, check out the updated documentation for both Uno Themes and Uno Toolkit. 

Best of the rest

There is so much more in this release that makes your life as a developer much easier. You’ll find around 500 fixes and improvements in a vast number of areas of Uno.UI, such as: 

  • MP4 camera capture for iOS 
  • Improved composition support for Skia targets 
  • Many performance improvements for all platforms 
  • Improved DPI scaling and theming support for GTK 
  • Many Shapes clipping and general measure/arrange improvements 
  • Compass and MemoryManager support for WebAssembly 


You can find the complete list of changes in our
GitHub repository. 

Breaking changes & strategy to bridge the changes

Uno Platform 5.0 includes a set of breaking changes, as well, moving Uno Platform closer to the API set of WinUI. Most of those changes are binary-breaking changes but generally are source-compatible. Rebuilding your application using Uno Platform 5.0 package will be enough to get you past the breaking changes. 

For library authors, it could be that your code is not impacted by the changes introduced in this release. For instance, SkiaSharp is compatible with both 5.0 and 4.x releases of Uno Platform. The best way to validate this is to upgrade an application and validate if there are runtime errors related to missing members. Just reach out to our team on GitHub, and we’ll happily assist you in bridging the changes.  

Xamarin, .NET 6 and Windows SDK 18362 end of support

Other breaking changes are introduced, following the ecosystem’s discontinuation of these technologies: 

  • Starting from Uno Platform 5.0, Xamarin support is removed. If you wish to continue using Xamarin, we will be maintaining the 4.x branch of Uno Platform until Xamarin support ends. 
  • .NET 6 support has been removed (support for .NET 6 for Mobile targets has ended), and you’re encouraged to move to .NET 7 or the upcoming .NET 8. 
  • If you were building for Windows SDK 18362, make sure to bump your minimum SDK version to 19041. 

Community Shout Out!

Our contributor community just passed 300 contributors across all our repositories – be it the core UI one, documentation, or gallery.  

Among others: 

Next Steps

As we stated in the beginning, using more than one piece of Uno Platform’s offering brings exponential productivity to your development process. We hope you see our vision of how future .NET applications will be created – ultimate productivity and control for developers resulting in visually appealing, delightful end-user experiences. 

To get started with Uno Platform please follow the beginner oriented Simple Calc workshop, which is doable in a coffee break. Or, for more advanced topics, use our Tube Player workshop.  

Uno Platform Team

Uno Platform Team

Follow us on Twitter

Tags:

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