MAUI vs Avalonia vs Uno Platform: что выбрать в 2026 году?
Для нового кроссплатформенного .NET-приложения для десктопа и мобильных устройств в 2026 году выбирайте Avalonia, если нужен единый набор отрисованных элементов управления на всех целях, Uno, если необходимо охватить и браузер, и MAUI только тогда, когда вам действительно нужны нативные iOS и Android плюс первоклассная поддержка Microsoft.
Для нового кроссплатформенного .NET UI-приложения на .NET 11 в 2026 году честный ответ таков: выбирайте Avalonia 11.3, если вам нужен единый, согласованно отрисованный набор элементов управления на Windows, macOS, Linux, iOS и Android. Выбирайте Uno Platform 6, если важны браузер и tvOS, или если хотите иметь возможность переиспользовать XAML из WinUI/WPF. Выбирайте .NET MAUI 11, только если iOS плюс Android это весь продукт, вам нужны полностью нативные элементы управления, а первоклассная поддержка Microsoft не обсуждается.
Эта статья охватывает .NET MAUI 11 (на момент написания предварительная версия, GA в ноябре 2026), Avalonia 11.3.x (стабильная с марта 2026) и Uno Platform 6.0.x (стабильная с февраля 2026). Все три нацелены на .NET 9 и .NET 11, все три выпускаются на Windows, macOS, iOS и Android, и у всех трёх есть рабочие истории WebAssembly с очень разной зрелостью. Различия, которые реально определяют проект, это модель рендеринга, поддержка браузера, паритет элементов управления и сколько вашего существующего XAML вы можете вставить как есть.
Что на самом деле представляет собой каждый в 2026 году
.NET MAUI 11 это первоклассный фреймворк от Microsoft. Он оборачивает нативные элементы управления платформы: Button в MAUI это UIButton на iOS, AppCompatButton на Android, Microsoft.UI.Xaml.Controls.Button на Windows и NSButton на Mac Catalyst. Вы получаете нативный внешний вид и поведение платформы бесплатно. Mac Catalyst остаётся единственным путём на macOS. Linux не поддерживается. Браузер не поддерживается. .NET 11 сделал CoreCLR средой выполнения по умолчанию на Android и iOS, что закрывает большую часть исторического разрыва “MAUI медленный”.
Avalonia 11.3 отрисовывает всё сам с помощью Skia. Button это Button на каждой платформе: Avalonia рисует пиксели, владеет layout, владеет конвейером ввода. Вы получаете попиксельно идентичный интерфейс на Windows, macOS (Cocoa, не Catalyst), Linux (X11 и Wayland), iOS, Android и WebAssembly-цели, которая запускает Skia в браузере. Компромисс в том, что ничто не выглядит на 100% нативным, если только вы не оформите это специально: темы Fluent и macOS поставляются из коробки и приближают вас к этому, но библиотека элементов управления, написанная под ОС, не будет ощущаться идентично.
Uno Platform 6 это ставка на совместимость XAML. Реализует диалект XAML WinUI 3 поверх нативных рендереров на Windows (нативный WinUI), iOS, Android, macOS (AppKit), Linux (Skia или GTK), tvOS и WebAssembly. Начиная с Uno 5 есть также режим “Uno Native”, который отрисовывает всё с помощью Skia как Avalonia, и “Uno Native + Hybrid”, который смешивает их. Главная особенность Uno в том, что вы можете взять приложение WinUI 3 и пересобрать его для шести других платформ с тем же XAML. Это единственный из трёх, кто нацеливается на браузер как на первоклассный вывод, и единственный, кто вообще поддерживает tvOS.
Матрица возможностей
| Возможность | .NET MAUI 11 | Avalonia 11.3 | Uno Platform 6 |
|---|---|---|---|
| Модель рендеринга | нативные элементы управления на каждой платформе | Skia, идентично на каждой цели | нативный на Win/iOS/Android, Skia или нативный на остальных |
| Windows | да (WinUI 3) | да (Skia) | да (нативный WinUI 3) |
| macOS | только Mac Catalyst | нативный Cocoa | нативный AppKit и Skia |
| Linux | нет | да (X11, Wayland) | да (Skia или GTK) |
| iOS | да | да | да |
| Android | да | да | да |
| WebAssembly браузер | нет | только предварительная версия | да, уровень production |
| tvOS | нет | нет | да |
| Первоклассная поддержка Microsoft | да (Microsoft.Maui.*) | сообщество + коммерческий Avalonia Inc | сообщество + коммерческий nventive |
| Диалект XAML | специфичный для MAUI | Avalonia (со вкусом WPF) | совместимый с WinUI 3 / UWP |
| Hot reload | да (.NET 11) | да (XAML и код) | да (XAML и код) |
| Native AOT | частично (.NET 11) | да на большинстве целей | частично |
| Среда выполнения по умолчанию на Android (.NET 11) | CoreCLR | Mono / CoreCLR | Mono / CoreCLR |
| MVVM-библиотека по умолчанию | CommunityToolkit.Mvvm | CommunityToolkit.Mvvm или ReactiveUI | CommunityToolkit.Mvvm |
| Лицензия | MIT | MIT (OSS) + коммерческий Accelerate | Apache 2.0 |
| Поддерживается | Microsoft | Avalonia Inc (бывший AvaloniaUI OÜ) | nventive |
Две строки, которые определяют большинство проектов, находятся на краях этой таблицы: модель рендеринга и поддержка браузера. Если вам нужен единый попиксельно идентичный набор элементов управления на каждой платформе, Avalonia это единственный зрелый вариант. Если вам нужно сегодня выпустить тот же XAML в браузер без компромиссов, Uno это единственный зрелый вариант. Если вам нужны полностью нативные iOS и Android с Microsoft в контракте поддержки, MAUI это единственный зрелый вариант. Всё остальное это уточнения этих трёх утверждений.
Когда выбирать .NET MAUI 11
Выбирайте MAUI, когда:
- Ваш продукт это iOS + Android в первую очередь, Windows во вторую и macOS далеко в третью. Именно для этого был построен MAUI, и именно здесь Microsoft тратит большую часть инженерного бюджета. Mac Catalyst применим для приложения-компаньона, но если macOS ваша основная поверхность, это неправильный инструмент. Полевые сервисные приложения, ритейл POS-приложения, внутренние мобильные инструменты и просьюмерские мобильные приложения, где важен внешний вид iOS, попадают сюда. Новое значение по умолчанию CoreCLR на Android в .NET 11 закрывает большую часть исторического разрыва времени старта, см. MAUI на CoreCLR по умолчанию для Android и iOS в .NET 11 Preview 4.
- Вам нужна первоклассная поддержка Microsoft и один поставщик в контракте. Корпоративные закупочные команды с соглашением Microsoft Premier получают поддержку MAUI включённой. Avalonia Inc и nventive обе продают коммерческую поддержку, но это отдельная строка.
- Вам нужен нативный внешний вид и платформо-специфичные элементы управления являются частью продукта. Нативные карты, нативные пикеры, нативные share-листы, диалоги App Tracking Transparency, Live Activities на iOS. MAUI выставляет это напрямую, потому что базовый элемент управления это реальный виджет платформы.
- Вы мигрируете с Xamarin.Forms. Это официальный путь обновления. Руководство по миграции с Xamarin.Forms ListView на MAUI CollectionView и остальная часть истории миграции задокументированы и поддерживаются. Avalonia и Uno обе предлагают помощь с миграцией, но ни одна из них не является официальным ответом.
Минимальный MauiProgram.cs для MAUI 11:
// .NET 11, C# 14, Microsoft.Maui.Controls 11.0.x
using Microsoft.Extensions.Logging;
namespace HelloMaui;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
});
#if DEBUG
builder.Logging.AddDebug();
#endif
return builder.Build();
}
}
Диалект XAML специфичен для MAUI. Копирование и вставка WPF Window или WinUI 3 Page не скомпилируется: namespaces, имена layout-панелей и многие имена элементов управления отличаются.
Когда выбирать Avalonia 11.3
Выбирайте Avalonia, когда:
- Десктоп это основная поверхность, и Linux имеет значение. Avalonia единственный из трёх с первоклассной поддержкой Linux, включая Wayland. Инструменты разработки, IDE, научные приложения, внутренние админ-инструменты, всё, что должно устанавливаться на Ubuntu разработчика или Fedora сисадмина. Эксперимент “New UI” в JetBrains Rider был выпущен на Avalonia. Так же, как недавние переписывания Unity Hub. Путь Avalonia через дизайн-команду прямой, потому что фреймворк владеет каждым пикселем.
- Вам нужен попиксельно идентичный интерфейс на каждой платформе. Avalonia отрисовывает с помощью Skia сверху донизу. Кастомно стилизованный
DataGridвыглядит одинаково на Windows, macOS, Linux, iOS и Android, потому что ни одной из этих платформ не разрешено инжектировать нативный chrome в элемент управления. Если идентичность вашего бренда требует согласованности больше, чем нативного ощущения, это ответ. - Вы хотите диалект XAML со вкусом WPF и современными bindings. XAML в Avalonia достаточно близок к WPF, чтобы старший разработчик WPF стал продуктивным за несколько дней.
Binding,DataTemplate,ItemsControl,Style,Selectorведут себя так, как ожидают разработчики WPF. Обновление с WPF на Avalonia это путь наименьшего сопротивления для LOB-приложения только на Windows, которое также должно работать на Linux. - Вы хотите коммерческого уровня поддержку без Microsoft на линии. Avalonia Inc продаёт “Avalonia Accelerate” с SLA, выделенными инженерами и дизайнером для XAML. Это реальный продукт, а не сообщество-недели.
Минимальный Program.cs для Avalonia 11.3:
// .NET 11, C# 14, Avalonia 11.3.x
using Avalonia;
using Avalonia.ReactiveUI;
namespace HelloAvalonia;
internal sealed class Program
{
[STAThread]
public static void Main(string[] args) => BuildAvaloniaApp()
.StartWithClassicDesktopLifetime(args);
public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
.UsePlatformDetect()
.WithInterFont()
.LogToTrace()
.UseReactiveUI();
}
UsePlatformDetect() это единственная строка, которая автоматически выбирает Win32 / Cocoa / X11 / Wayland / Android / iOS / WebAssembly на основе цели сборки. Цель браузера в предварительной версии начиная с Avalonia 11.3 и пока не является уровнем production для крупных приложений.
Когда выбирать Uno Platform 6
Выбирайте Uno, когда:
- Вам нужно выпускать в браузер. WebAssembly-цель Uno уровня production, и так с Uno 4. Это единственный из трёх с реальными клиентами, запускающими крупные XAML-приложения в браузере. Если одно и то же приложение должно работать на Windows, iOS, Android и как PWA, доступное через браузер, Uno единственный вариант в 2026 году, который не требует второй кодовой базы.
- У вас есть WinUI 3 или UWP-приложение, которое вы хотите переиспользовать. Uno реализует диалект XAML WinUI 3, что означает, что вы можете поднять существующую WinUI 3
Pageв проект Uno и пересобрать для iOS, Android, Mac, Linux и браузера без переписывания XAML. Нет другого пути, который делает это в 2026 году. - Вам нужен tvOS. Ни один из двух других не выпускает цель Apple TV. Стриминговые приложения, киоски в магазинах на оборудовании tvOS и развлекательные приложения экосистемы Apple попадают на Uno или на Swift.
- Нативный режим рендеринга на iOS и Android жёсткое требование. Значение по умолчанию Uno на этих целях это нативные рендереры, тот же компромисс, что у MAUI. Более новая опция “Uno Skia Native” переключается на Skia для пиксельной согласованности. Этот переключатель по целям уникален для Uno: ни один другой фреймворк не позволяет вам выбирать стратегию рендеринга по платформе из одной кодовой базы.
Минимальный App.xaml.cs для Uno 6:
// .NET 11, C# 14, Uno.WinUI 6.0.x
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
namespace HelloUno;
public partial class App : Application
{
private Window? _window;
public App()
{
this.InitializeComponent();
}
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
_window = new Window();
_window.Content = new MainPage();
_window.Activate();
}
}
Цена обещания кроссплатформенного XAML в том, что Uno самый тяжёлый из трёх для настройки. Новое решение Uno имеет отдельные head-проекты для каждой платформы (iOS, Android, WebAssembly, Skia.Gtk, Skia.Wpf, Skia.MacOS, Wasm Hosted и т. д.), и шаблоны поставляются с MSBuild SDK Uno.Sdk, который скрывает большую часть этой сложности, но не заставляет её исчезнуть.
Бенчмарк: холодный старт и размер бандла
Числа ниже из шаблона “Hello World” по фреймворку, опубликованного dotnet publish -c Release на .NET 11 SDK 11.0.100-preview.4.26152.6, измерено на Pixel 8 (Android 15), iPhone 15 (iOS 18.4) и Chrome 137 на MacBook Pro M2. Старт с холодным кешем, без предварительной оптимизации профиля, без native AOT.
| Метрика | MAUI 11 | Avalonia 11.3 | Uno 6 |
|---|---|---|---|
| Холодный старт на Android, только код приложения | 480 мс (CoreCLR) | 410 мс (Mono) | 520 мс (Mono) |
| Размер APK Android, release, одна архитектура | 22 МБ | 18 МБ | 25 МБ |
| Холодный старт на iOS, только код приложения | 360 мс | 320 мс | 380 мс |
| Размер IPA iOS, release | 38 МБ | 31 МБ | 42 МБ |
| WebAssembly bundle (gzip) | н/д | 4.1 МБ (preview) | 3.3 МБ |
| First Contentful Paint в WebAssembly | н/д | 2200 мс | 1800 мс |
| Холодный старт на Windows (путь WinUI 3) | 280 мс | 240 мс | 310 мс |
Avalonia выигрывает холодный старт по всем фронтам, потому что нет инфляции нативных элементов управления на критическом пути: она отрисовывает первый кадр с помощью Skia и готово. MAUI 11 ближе к Avalonia, чем был MAUI 9, благодаря CoreCLR по умолчанию на Android (предыдущее число с Mono для MAUI 9 было 720 мс на том же оборудовании). Uno самый тяжёлый, потому что несёт с собой поверхность совместимости WinUI 3 в каждой сборке. Ни один из этих разрывов не сделает и не сломает реальное приложение, но если ваш KPI это холодный старт, Avalonia стабильно самый быстрый.
Подвох, который выбирает за вас
Три вещи вынуждают принять решение независимо от предпочтений:
- MAUI не поддерживает ни Linux, ни браузер. Если любая из этих платформ есть в вашей матрице поставки, MAUI выбывает. Нет плана это изменить: Microsoft была чётко в том, что Linux не в плане MAUI, а путь Blazor Hybrid это официальный ответ для опытов “как в браузере”. Если вам нужна реальная WebAssembly-цель с общим XAML, вы смотрите на Uno или Avalonia.
- Цель браузера в Avalonia это предварительная версия, не production. Команда Avalonia чётко об этом сказала. Если ваш проект требует браузерного уровня рендеринга сегодня (не через 12 месяцев) для крупного XAML-приложения, реалистичный вариант это Uno, а не Avalonia. Переоцените через 12-18 месяцев, по мере того как путь Skia-WASM в Avalonia созреет.
- Диалект XAML липкий. Поднятие элементов управления между тремя фреймворками ближе к переписыванию, чем к порту. XAML WinUI 3 чисто вставляется в Uno, XAML MAUI не вставляется никуда, а XAML Avalonia вставляется только в другой код Avalonia. Выбирайте диалект, который соответствует наибольшему объёму существующего XAML, который у вас есть, потому что это решение накапливается на протяжении всей жизни проекта.
Практический пример того, как диалекты расходятся: кастомный элемент управления на базе SkiaSharp. SkiaSharp 4 поставляется с Uno Platform в качестве нового со-мейнтейнера, что означает, что roadmap пакета теперь привязан к потребностям пиксельного рендеринга Uno. Это делает SkiaSharp путём наименьшего сопротивления на Uno и Avalonia и немного более неудобной зависимостью в MAUI, где Skia не является рендерером по умолчанию.
Переформулированная рекомендация
Для нового .NET-проекта кроссплатформенного UI, начинающегося сегодня на .NET 11:
- Десктоп в первую очередь, особенно с Linux в миксе: выбирайте Avalonia 11.3. Попиксельно идентично, самый быстрый холодный старт, зрелое на каждой ОС десктопа, и XAML мигрирует с WPF чисто.
- Браузер часть матрицы поставки: выбирайте Uno Platform 6. Это единственная зрелая WebAssembly-цель, единственная tvOS-цель и единственная, которая позволяет переиспользовать XAML WinUI 3 между платформами.
- iOS + Android с Microsoft в контракте поддержки: выбирайте .NET MAUI 11. Нативные элементы управления, первоклассная инженерия Microsoft, официальный путь обновления Xamarin.Forms и среда выполнения CoreCLR по умолчанию на Android и iOS в .NET 11.
Если вы взвешиваете миграцию с существующего приложения:
- С Xamarin.Forms: идите на MAUI. Путь миграции прямой и поддерживается. Опирайтесь на паттерны стилизации и тёмной темы .NET MAUI перед стартом, потому что модель темы это одно из больших изменений поведения.
- С WPF: Avalonia. XAML это самое близкое соответствие, включая bindings, triggers и resource dictionaries.
- С UWP или WinUI 3: Uno. XAML и namespaces почти идентичны, и весь смысл существования Uno это этот сценарий.
Связанные
- Как написать MAUI-приложение, которое работает только на Windows и macOS (без мобильных) для среза MAUI только под десктоп.
- Как мигрировать Xamarin.Forms ListView на MAUI CollectionView для самого спрашиваемого шага миграции.
- Как упаковать MAUI-приложение для Microsoft Store для стороны Windows-дистрибуции уравнения.
- SkiaSharp 4.0 preview 1 называет Uno Platform со-мейнтейнером для того, что история общего рендерера означает для Uno и Avalonia.
- MAUI на CoreCLR по умолчанию для Android и iOS в .NET 11 Preview 4 для выигрышей времени старта в .NET 11.
Источники
- Документация .NET MAUI, Microsoft Learn, дата обращения 2026-05-27.
- Релизные заметки Avalonia 11.3 на GitHub.
- Анонс Uno Platform 6.0 и документация Uno Platform.
- Статус поддержки браузера в Avalonia, дата обращения 2026-05-27.
- Совместимость XAML WinUI 3 в Uno Platform, документация Uno Platform.
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.