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

Uno Platform is an open-source developer platform for building single-codebase .NET applications that run natively on Web, Desktop, Mobile, and Embedded systems. It uses the WinUI 3 API surface, allowing you to reuse your existing C# and XAML skills to reach all platforms.
Uno Platform is trusted by over 300 contributors and used by enterprise clients such as Toyota, Microsoft, and Kahua for mission-critical applications. With ~10,000 GitHub stars and 130+ million NuGet downloads, it is a proven foundation for professional-grade development.
Uno Platform and Uno Platform Studio for The Most Productive C# / XAML Dev Loop
Uno Platform (Core Framework)
The free and open-source (Apache 2.0) foundation for building cross-platform .NET applications. It includes the UI framework, platform heads, and a rich set of developer experience enhancements.
ð Cross-Platform Support
Develop fully native applications for a wide range of platforms from a single codebase.
- Mobile (iOS & Android): Build native, pixel-perfect UIs with C# and XAML.
- Web (WebAssembly): Reuse existing C# and XAML skills to build fast web applications.
- Desktop (Windows, macOS & Linux): Uno Platform uses Skia for rendering across all desktop platforms, ensuring high-performance, hardware-accelerated graphics and animations. On Windows, Skia runs within a Win32 shell, on macOS within an AppKit shell (Metal when available), and on Linux within an X11 shell or directly to the Framebuffer for embedded scenarios.
ð ï¸ Toolkit & Extensions
- UI Controls: Access hundreds of UI components from WinUI, Windows Community Toolkit, Uno Toolkit, third-party vendors, and even .NET MAUI controls.
- Theming: Easily theme your app with Material, Fluent, or Cupertino styles using minimal code.
- State Management: Choose between the familiar MVVM pattern or the modern MVUX approach for declarative and scalable state management.
- Extensions: Utilize ready-to-use libraries for common functionalities like navigation, logging, and dependency injection.
- Non-UI Cross-Platform APIs: Access a comprehensive set of APIs to interact with native device features such as sensors and secure storage.
Uno Platform Studio
An optional premium toolkit that integrates with Visual Studio, VS Code, and JetBrains Rider to offer an unparalleled development loop.
- Hot Design: A next-generation visual designer that transforms your live app into a design surface with a single click.
- Hot Reload: Instantly modify XAML and C# on a running app, allowing for rapid iteration without losing the app's state.
- Design-to-Code: Export Figma designs to clean, responsive XAML or C# markup in seconds.
ð Quick Start
Get your development environment ready and create your first app in minutes.
-
Check Your Environment: Use our Uno.Check command-line tool to automatically check, install, and configure all required workloads and dependencies.
-
Create Your App: Use the Template Wizard in your IDE or the command line to quickly create and configure new Uno Platform projects with the appropriate settings for your target platforms.
-
Build and Run
â¡ï¸ For detailed guides, visit the Official Uno Platform Documentation on how to get started with Uno Platform.
ð ï¸ How It Works
Uno Platform unifies cross-platform development by abstracting platform-specific implementations behind the WinUI 3 API surface.
- Develop: You write your application in a single project using C# and XAML (or C# Markup) within your preferred environment (Visual Studio, JetBrains Rider, Visual Studio Code) on Windows, macOS, or Linux.
- Render: Uno Platform renders your UI using one of two methods:
- Unified Skia Rendering: A Skia-based engine draws your UI on a canvas, ensuring consistent performance, smooth animations, and pixel-perfect visuals across all targets.
- Native Rendering: The XAML UI is translated into native platform controls (e.g., UIKit on iOS), providing a platform-native look and feel when desired.
- Deploy: The build process generates a native application package for each target platform from the single codebase.
Uno Platform Features
- Supported platforms:
- Windows 10 and Windows 11
- Windows 7 (via Skia Desktop)
- macOS (via Skia Desktop)
- iOS and Android (via .NET)
- WebAssembly through the .NET Runtime WebAssembly SDK
- Linux (via Skia Desktop with X11 and FrameBuffer)
- Dev loop:
- Develop on your favorite IDE (Visual Studio, Rider, or VS Code) on your favorite OS (Windows, macOS, or Linux)
- XAML and/or C# Hot Reload for WebAssembly, macOS, Linux, Windows, iOS, and Android
- Uno.UITest, a library to create Cross-Platform UI Tests for WebAssembly, iOS, and Android.
- Cross-Platform Controls:
- WinUI Code Support:
- Responsive Design:
- Adaptive Triggers
- Platform Specific:
- Native controls and properties via conditional XAML
- Any of the existing Xamarin iOS/Android libraries available
ð Learning & Community Resources
- Official Documentation: The complete guide to Uno Platform.
- Uno Platform Studio: Details for the set of productivity tools Uno Platform Studio, that includes:
- Uno Playground: Experiment with code snippets and see live previews.
- Uno Gallery: Explore various UI themes and components in action.
- Workshops & Code Samples: Access practical tutorials and sample projects to accelerate learning.
- Case Studies: Learn from real-world applications built using the Uno Platform.
- Uno Platform Blog: The latest news, technical deep-dives, and release announcements.
- Discord Server: Join our active community for real-time discussions and support.
- Uno Tech Bites: Bite-sized learning videos with the team.
- Why Use Uno Platform for Your Project?: Discover the key benefits and reasons to choose Uno Platform.
- General FAQ: Find answers to common questions about Uno Platform.
Contributing
This is an active open-source project, and we welcome contributions from the community.
To learn how you can get involved, please refer to our Contribution Guide (CONTRIBUTING.md
) for details on how to get started.
Contributors
Thanks go to these wonderful people (List made with contrib.rocks):
License
This repository is licensed under the Apache 2.0 License.
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