Convert Figma logo to code with AI

unoplatform logouno

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!!

9,280
768
9,280
1,873

Top Related Projects

22,629

.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.

27,472

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

  1. 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!";
    }
}
  1. 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));
    }
}
  1. 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

  1. Install the Uno Platform Solution Templates:

    dotnet new -i Uno.ProjectTemplates.Dotnet
    
  2. Create a new Uno Platform project:

    dotnet new unoapp -o MyUnoApp
    
  3. Open the solution in Visual Studio and run the desired head project (e.g., MyUnoApp.Windows for Windows, MyUnoApp.Wasm for WebAssembly).

Competitor Comparisons

22,629

.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.

27,472

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README



Pixel-Perfect. Multi-Platform. C# & Windows XAML. Today.

NuGet Azure DevOps NuGet Downloads GitHub Stars All Contributors X/Twitter Followers Uno Platform Discord Open Uno in Gitpod PRs Welcome

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:

Uno Platform Features

Live WebAssembly Apps

Here's a list of live apps made with the Uno Platform for WebAssembly.

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.

Open in Gitpod

Contributors

Thanks go to these wonderful people (List made with contrib.rocks):

Uno Platform Contributors

💖 Thank you.