uno
Open-source platform for building cross-platform native Mobile, Web, Desktop and Embedded apps quickly. Create rich, C#/XAML, single-codebase apps from any IDE. Hot Reload included! 90m+ NuGet Downloads!!
Top Related Projects
.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
Xamarin.Forms is no longer supported. Migrate your apps to .NET MAUI.
Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET UI client technology
An advanced, composable, functional reactive model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming. ReactiveUI allows you to abstract mutable state away from your user interfaces, express the idea around a feature in one readable place and improve the testability of your application.
A curated list of awesome Xamarin.Forms libraries and resources
Quick Overview
Uno Platform is an open-source UI platform for building cross-platform applications using C# and XAML. It allows developers to create native mobile, desktop, and WebAssembly apps from a single codebase, leveraging the power of .NET and the familiarity of WinUI.
Pros
- Cross-platform development: Build apps for iOS, Android, macOS, Windows, Linux, and WebAssembly from a single codebase
- Familiar technology stack: Uses C# and XAML, making it easy for .NET developers to adopt
- Native performance: Provides native UI controls and performance on each platform
- Large ecosystem: Leverages the existing .NET ecosystem and libraries
Cons
- Learning curve: Requires understanding of XAML and platform-specific considerations
- Limited community compared to more established frameworks
- Performance overhead in some scenarios, especially for WebAssembly
- May not be suitable for highly platform-specific or complex UI requirements
Code Examples
- Creating a simple button with a click event:
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MyTextBlock.Text = "Hello, Uno Platform!";
}
}
- Implementing data binding:
<TextBox x:Name="NameTextBox" Text="{Binding Name, Mode=TwoWay}" />
<TextBlock Text="{Binding Greeting}" />
public class MainViewModel : INotifyPropertyChanged
{
private string _name;
public string Name
{
get => _name;
set
{
_name = value;
OnPropertyChanged();
OnPropertyChanged(nameof(Greeting));
}
}
public string Greeting => $"Hello, {Name}!";
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
- Using platform-specific code:
#if __IOS__
UIKit.UIApplication.SharedApplication.StatusBarStyle = UIKit.UIStatusBarStyle.LightContent;
#elif __ANDROID__
Android.App.Application.Context.SetTheme(Resource.Style.AppTheme);
#endif
Getting Started
-
Install the Uno Platform Solution Templates:
dotnet new -i Uno.ProjectTemplates.Dotnet
-
Create a new Uno Platform project:
dotnet new unoapp -o MyUnoApp
-
Open the solution in Visual Studio and run the desired head project (e.g., MyUnoApp.Windows for Windows, MyUnoApp.Wasm for WebAssembly).
Competitor Comparisons
.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
Pros of MAUI
- Stronger official support from Microsoft, ensuring long-term stability and updates
- Seamless integration with existing .NET ecosystem and tools
- More mature documentation and learning resources
Cons of MAUI
- Limited support for non-mobile platforms (e.g., web)
- Steeper learning curve for developers new to .NET
- Less flexibility in UI customization compared to Uno Platform
Code Comparison
MAUI:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyApp.MainPage">
<StackLayout>
<Label Text="Welcome to .NET MAUI!" />
</StackLayout>
</ContentPage>
Uno Platform:
<Page x:Class="MyApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<TextBlock Text="Welcome to Uno Platform!" />
</Grid>
</Page>
Both MAUI and Uno Platform offer cross-platform development capabilities, but they have different strengths and target audiences. MAUI is more focused on mobile development with official Microsoft backing, while Uno Platform provides broader platform support, including web applications. The choice between them depends on specific project requirements and developer preferences.
Xamarin.Forms is no longer supported. Migrate your apps to .NET MAUI.
Pros of Xamarin.Forms
- More mature and established ecosystem with extensive documentation and community support
- Native UI controls for each platform, resulting in a more native look and feel
- Wider range of third-party libraries and plugins available
Cons of Xamarin.Forms
- Limited support for desktop platforms (Windows and macOS)
- Performance can be slower compared to native development, especially for complex UIs
- Steeper learning curve for developers new to mobile development
Code Comparison
Xamarin.Forms:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<StackLayout>
<Label Text="Welcome to Xamarin.Forms!" />
</StackLayout>
</ContentPage>
Uno:
<Page x:Class="MyApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<TextBlock Text="Welcome to Uno Platform!" />
</Grid>
</Page>
Both frameworks use XAML for UI definition, but Uno follows the UWP XAML syntax more closely, while Xamarin.Forms has its own XAML vocabulary. Uno provides a more consistent development experience across platforms, including web and desktop, while Xamarin.Forms focuses primarily on mobile platforms with limited desktop support.
Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET UI client technology
Pros of Avalonia
- Native-like performance across all platforms
- Extensive and customizable UI controls
- Strong community support and active development
Cons of Avalonia
- Steeper learning curve for developers new to XAML
- Limited mobile platform support compared to Uno
- Smaller ecosystem of third-party libraries and controls
Code Comparison
Avalonia XAML:
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Avalonia Example">
<Button Content="Click me!" />
</Window>
Uno XAML:
<Page
x:Class="UnoApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button Content="Click me!" />
</Page>
Both frameworks use XAML for UI definition, but Avalonia has its own namespace and slightly different syntax. Uno follows the UWP XAML structure more closely, which may be more familiar to Windows developers. Avalonia offers more flexibility in styling and custom controls, while Uno provides better integration with existing UWP code and resources.
An advanced, composable, functional reactive model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming. ReactiveUI allows you to abstract mutable state away from your user interfaces, express the idea around a feature in one readable place and improve the testability of your application.
Pros of ReactiveUI
- Mature and well-established framework with a large community and extensive documentation
- Supports a wide range of platforms, including mobile, desktop, and web
- Powerful reactive programming model for handling complex UI interactions and data flows
Cons of ReactiveUI
- Steeper learning curve, especially for developers new to reactive programming
- Can be overkill for simpler applications with less complex state management needs
- Limited cross-platform UI capabilities compared to Uno Platform
Code Comparison
ReactiveUI:
this.WhenAnyValue(x => x.SearchTerm)
.Throttle(TimeSpan.FromSeconds(0.8))
.SelectMany(term => SearchService.Search(term))
.ObserveOn(RxApp.MainThreadScheduler)
.ToProperty(this, x => x.SearchResults, out _searchResults);
Uno Platform:
private void SearchBox_TextChanged(object sender, TextChangedEventArgs e)
{
var searchTerm = ((TextBox)sender).Text;
SearchResults = await SearchService.Search(searchTerm);
}
The ReactiveUI example showcases its reactive approach, while the Uno Platform example demonstrates a more traditional event-driven pattern. ReactiveUI offers more sophisticated state management, while Uno Platform focuses on cross-platform UI development with a familiar programming model.
A curated list of awesome Xamarin.Forms libraries and resources
Pros of awesome-xamarin-forms
- Comprehensive collection of resources, libraries, and tools for Xamarin.Forms development
- Community-driven project with frequent updates and contributions
- Serves as a valuable reference guide for both beginners and experienced developers
Cons of awesome-xamarin-forms
- Not an actual framework or development platform, just a curated list
- Lacks direct code implementation or examples
- May include outdated or deprecated resources if not regularly maintained
Code Comparison
As awesome-xamarin-forms is a curated list and not a development framework, a direct code comparison with Uno is not applicable. However, here's an example of how you might use a library listed in awesome-xamarin-forms compared to Uno:
awesome-xamarin-forms (using a listed library):
using Xamarin.Forms;
using Rg.Plugins.Popup;
public partial class MainPage : ContentPage
{
async void OnButtonClicked(object sender, EventArgs e)
{
await Navigation.PushPopupAsync(new MyPopupPage());
}
}
Uno:
using Windows.UI.Xaml.Controls;
public sealed partial class MainPage : Page
{
private void OnButtonClick(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(MyPopupPage));
}
}
Note that the Uno example uses UWP-style navigation, while the awesome-xamarin-forms example uses a third-party popup library listed in the repository.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME

Pixel-Perfect. Multi-Platform. C# & Windows XAML. Today.
What is the Uno Platform?
The Uno Platform is an Open-source platform for building single codebase native mobile, web, desktop, and embedded apps quickly.
It allows C# and WinUI XAML and/or C# code to run on all target platforms while allowing you control of every pixel. It comes with support for Fluent, Material, and Cupertino design systems out of the box. Uno Platform implements a growing number of the WinRT and WinUI APIs, such as Microsoft.UI.Xaml, to enable WinUI applications to run on all platforms with native performance.
Use the WinUI tooling from Windows in Visual Studio, such as XAML Hot Reload and C# Hot Reload, build your application as much as possible on Windows, then validate that your application runs on iOS, Android, macOS, and WebAssembly.
Visit our documentation for more details.
Getting Started
See the complete Getting Started guides for starting with Visual Studio, Visual Studio Code, or JetBrains Rider.
For a larger example and features demo:
- Visit the Uno Gallery repository.
- Try the WebAssembly Uno Playground live in your browser.
Uno Platform Features
- Supported platforms:
- Windows 10 and Windows 11
- Windows 7 (via Skia Desktop)
- iOS, MacOS (Catalyst) and Android (via .NET)
- WebAssembly through the .NET Runtime WebAssembly SDK
- Linux (via Skia Desktop with X11 and FrameBuffer)
- macOS (via Skia Desktop)
- Dev loop:
- Develop on Windows first using Visual Studio
- XAML Hot Reload for live XAML edition on each keystroke
- C# Hot Reload on Windows (VS2022/Rider/VS Code), Linux and macOS (VS Code / Rider)
- Validate on other platforms as late as possible
- Develop in VS Code, Rider, Codespaces, or GitPod
- XAML and/or C# Hot Reload for WebAssembly, Linux, iOS and Android
- Uno.UITest, a library to create Cross-Platform UI Tests for WebAssembly, iOS, and Android.
- Cross Platform Controls:
- WinUI/UWP Code Support:
- Responsive Design:
- Platform Specific:
- Native controls and properties via conditional XAML
- Any of the existing Xamarin iOS/Android libraries available
- Xamarin.Forms Renderers:
Live WebAssembly Apps
Here's a list of live apps made with the Uno Platform for WebAssembly.
- The Uno Platform Playground (Source).
- The Uno Gallery demonstrates the use of Fluent and Material guidelines.
- The NuGet Package Explorer (Source).
- The Uno Calculator, a simple yet powerful iOS/Android/WebAssembly C# port of the calculator that ships with Windows (Source). Also try the iOS version, the Android version and Linux version.
- The Community Toolkit Labs App
- SkiaSharp fork for the Uno Platform, Skia is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library (Source).
- The Uno.WindowsCommunityToolkit (Source).
- The Uno.RoslynQuoter, a Roslyn based C# analysis tool (Source).
- The SQLite + Entity Framework Core App, a demo of the combination of Roslyn, Entity Framework Core, SQLite and the Uno Platform to manipulate an in-browser database.
- A WebAssembly AOT RayTracer.
Let us know if you've made your app publicly available, we'll list it here!
Have questions? Feature requests? Issues?
Make sure to visit our FAQ, create an issue, open a GitHub Discussion or visit our Discord Server - where our engineering team and community will be able to help you.
Contributing
There are many ways that you can contribute to the Uno Platform, as the WinRT and WinUI APIs are pretty large! Read our contributing guide to learn about our development process and how to propose bug fixes and improvements. Come visit us on Discord for help on how to contribute!
Contribute to Uno in your browser using GitPod.io, follow our guide here.
Contributors
Thanks go to these wonderful people (List made with contrib.rocks):
ð Thank you.
Top Related Projects
.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
Xamarin.Forms is no longer supported. Migrate your apps to .NET MAUI.
Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET UI client technology
An advanced, composable, functional reactive model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming. ReactiveUI allows you to abstract mutable state away from your user interfaces, express the idea around a feature in one readable place and improve the testability of your application.
A curated list of awesome Xamarin.Forms libraries and resources
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot