🕓 5 MIN If you’re a developer …
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.
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 boosts. That 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.
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.
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.
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:
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.
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
Another key benefit of MVUX is all the code you don’t have to write:
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.
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.
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:
You can find the complete list of changes in our GitHub repository.
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.
Other breaking changes are introduced, following the ecosystem’s discontinuation of these technologies:
Our contributor community just passed 300 contributors across all our repositories – be it the core UI one, documentation, or gallery.
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.
🕓 5 MIN If you’re a developer …