TL;DR Defaults
| You want | Use |
|---|---|
| Modern Microsoft / Windows-native feel | FluentTheme + FluentAvalonia |
| Modern, opinionated flat (Linear-like) | SukiUI |
| Clean Chinese-design-system look | Semi.Avalonia |
| Material Design 3 | Material.Avalonia |
| shadcn/ui-inspired developer aesthetic | ShadUI |
| Rich enterprise control set | Ursa.Avalonia |
| Just a slight upgrade over built-ins | Citrus.Avalonia |
| Retro Windows 9x | Classic.Avalonia |
| Fallout Pip-Boy / themed novelty | Pipboy.Avalonia |
| Pure custom (no library) | FluentTheme only + your own ControlThemes |
Avalonia Version Compatibility (verified on nuget.org, 2026-10-22)
Third-party themes version independently of Avalonia. Pick the package line that matches the project's Avalonia version (see avalonia-versions). "Min Avalonia" is the lowest Avalonia the package's nuspec declares (a NuGet minimum, not an exact pin). Do not mix a 11.x-line theme with a 12.x app or the reverse.
| Package (NuGet id) | Avalonia 11.3 | Avalonia 12.0 / 12.1 |
|---|---|---|
FluentAvaloniaUI |
2.5.1 (min Avalonia 11.3.12) | 3.0.0 (min 12.0.0) · 3.1.0 (min 12.1.0) |
SukiUI |
6.1.1 (min 11.3.14) | 7.0.1 (min 12.0.3). Stable 7.x on nuget is 7.0.1; later 7.0.2 builds are nightly only |
Semi.Avalonia |
11.3.22 (min 11.3.22) | 12.0.0 / 12.0.1 / 12.0.3 / 12.1.0 / 12.1.0.1 (12.1.0.1: min 12.1.0) |
Irihi.Ursa |
1.15.1 (min 11.3.7) | 2.0.0 to 2.2.0 published (2.2.0: min 12.0.2; earlier 2.x minimums not checked) |
Irihi.Ursa.Themes.Semi (Ursa + Semi bridge) |
not checked | 2.2.0 (needs Irihi.Ursa 2.2.0, Semi.Avalonia 12.0.1+, Avalonia 12.0.2+) |
Material.Avalonia |
up to 3.14.2 (min Avalonia 11.1.0) | 3.15.0 / 3.15.1 / 3.18.0 / 3.19.0 (min 12.0.0; intermediate versions not checked) · 3.20.0 / 3.21.0 (min 12.1.1) |
ShadUI |
none (0.x line starts at Avalonia 12) | 0.2.0 (min 12.0.2) · 0.2.4 (min 12.1.0, net10.0/net9.0 targets) |
Notes:
- Target frameworks seen in nuspecs: FluentAvaloniaUI 2.5.1/3.x
net10.0only; SukiUI 6.1.1/7.0.1 and Material.Avalonia 3.20/3.21net8.0only; Semi.Avalonia 12.1.0.1 and Irihi.Ursa 2.2.0net8.0+net10.0. Check your app's TargetFramework against the package. - ShadUI 0.2.4 lists
net10.0andnet9.0targets only; ShadUI 0.2.0 listsnet8.0/net9.0/net10.0. - Not verified: runtime behavior of each theme on Avalonia 12 (only package metadata was checked). Read the project's release notes for breaking visual/API changes between major versions (e.g. FluentAvaloniaUI 2.x to 3.x, SukiUI 6.x to 7.x, Ursa 1.x to 2.x).
Recommendation Matrix by Product Type
| Product | Best fit | Why |
|---|---|---|
| Internal tools / admin / dashboards | FluentAvalonia + FluentTheme | NavigationView, InfoBar, TeachingTip ready; matches Windows desktop expectation |
| Cross-platform consumer app | SukiUI or Semi.Avalonia | Look identical on Win/macOS/Linux, modern flat |
| Mobile-first cross-platform | Semi.Avalonia + custom tokens | Lightweight, works well at small sizes |
| Developer tool (IDE, terminal, db client) | SukiUI or ShadUI | Dark-first, low-chrome, accent-driven |
| Material-spec product | Material.Avalonia | True MD3 compliance |
| Enterprise B2B with many forms / data | Ursa.Avalonia | Pre-built form, tag, badge, drawer, time picker, etc. |
| Game launcher / creative app | SukiUI + custom palette | High-contrast, flexible |
| Migration from WPF (minimum visual change) | FluentTheme only | Closest to legacy Windows look without Material weirdness |
FluentTheme (built-in baseline)
Always start here unless you have a strong reason. Ships with Avalonia, no extra NuGet.
<Application.Styles>
<FluentTheme/>
</Application.Styles>
Pair with RequestedThemeVariant="Default" to follow OS.
Customize the FluentTheme accent via well-known resource keys:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light">
<SolidColorBrush x:Key="SystemAccentColor" Color="#2563EB"/>
<SolidColorBrush x:Key="SystemAccentColorDark1" Color="#1D4ED8"/>
<SolidColorBrush x:Key="SystemAccentColorLight1" Color="#3B82F6"/>
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="SystemAccentColor" Color="#3B82F6"/>
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Application.Resources>
FluentAvalonia
WinUI3-style controls + accent system. Best companion to FluentTheme.
dotnet add package FluentAvaloniaUI # 3.x for Avalonia 12, 2.5.x for Avalonia 11.3
<Application xmlns="https://github.com/avaloniaui"
xmlns:ui="using:FluentAvalonia.UI.Controls"
xmlns:fav="using:FluentAvalonia.Styling">
<Application.Styles>
<fav:FluentAvaloniaTheme PreferUserAccentColor="True"/>
</Application.Styles>
</Application>
Key controls: NavigationView, Frame, InfoBar, TeachingTip, CommandBar, Expander (rich), ContentDialog, FAComboBox, NumberBox, TabView, SettingsExpander.
Use instead of FluentTheme (FluentAvaloniaTheme already includes Fluent base).
SukiUI
Opinionated flat dark-friendly theme, modern look. Includes own controls and dialog system.
dotnet add package SukiUI # 7.x for Avalonia 12, 6.x for Avalonia 11.3
<Application xmlns="https://github.com/avaloniaui"
xmlns:suki="clr-namespace:SukiUI;assembly=SukiUI">
<Application.Styles>
<suki:SukiTheme ThemeColor="Blue"/>
</Application.Styles>
</Application>
Wrap windows in SukiWindow for the chromeless title bar:
<suki:SukiWindow xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI"
Title="My App">
<!-- content -->
</suki:SukiWindow>
Dialogs: ISukiDialogManager injected into ViewModel.
Semi.Avalonia
Port of Semi Design (ByteDance). Clean, dense, great for forms.
dotnet add package Semi.Avalonia # version line follows Avalonia (11.3.x / 12.x)
<Application xmlns="https://github.com/avaloniaui"
xmlns:semi="https://irihi.tech/semi">
<Application.Styles>
<semi:SemiTheme Locale="en-US"/>
</Application.Styles>
</Application>
Often paired with Ursa.Avalonia (same author) for extra controls (TagInput, IconButton, Drawer, TimelineItem, Toast).
dotnet add package Irihi.Ursa
dotnet add package Irihi.Ursa.Themes.Semi
<Application.Styles>
<semi:SemiTheme Locale="en-US"/>
<semi:UrsaSemiTheme Locale="en-US"/> <!-- Ursa bridge styles -->
</Application.Styles>
Material.Avalonia
True Material Design 3.
dotnet add package Material.Avalonia # 3.15+ needs Avalonia 12; 3.14.x for Avalonia 11
dotnet add package Material.Avalonia.DataGrid <!-- optional -->
dotnet add package Material.Icons.Avalonia
<Application xmlns="https://github.com/avaloniaui"
xmlns:material="clr-namespace:Material.Styles.Themes;assembly=Material.Avalonia">
<Application.Styles>
<material:MaterialTheme BaseTheme="Inherit" PrimaryColor="Blue" SecondaryColor="Pink"/>
</Application.Styles>
</Application>
Use Material.Icons.Avalonia for the icon set:
<materialIcons:MaterialIcon Kind="Home"/>
ShadUI
shadcn/ui-inspired styling for Avalonia. Currently community-driven; check repo for latest install. NuGet id ShadUI; every published version (0.2.x) targets Avalonia 12 (no Avalonia 11 line).
Aesthetic: minimal, neutral grays, single accent, subtle shadows, generous radius. Ideal for developer-facing tools.
Ursa.Avalonia
Stand-alone full UI library (also bridges with Semi). Adds: Form, Tag, IconButton, Drawer, Skeleton, Toast, Banner, Pagination, KeyGestures, color picker, time picker, calendar, date picker, etc.
dotnet add package Irihi.Ursa
<Application.Styles>
<FluentTheme/> <!-- Ursa needs a base theme -->
<ursa:UrsaTheme/>
</Application.Styles>
Use Ursa 2.x with Avalonia 12 and Ursa 1.x with Avalonia 11.3 (see compatibility table). The ursa:UrsaTheme snippet above is from earlier docs; confirm it against the project's README for the installed major version.
Citrus.Avalonia
Light styling pack — keeps native controls but modernizes their visuals. Good for "tweak the defaults" projects.
dotnet add package Citrus.Avalonia
<Application.Styles>
<StyleInclude Source="avares://Citrus.Avalonia/Citrus.xaml"/>
</Application.Styles>
Classic.Avalonia / Pipboy.Avalonia / Neumorphism.Avalonia / WPFDarkTheme
Niche aesthetics — ship as primary theme only when the app's identity demands it. Don't combine with Fluent/Material.
Combination Rules
Allowed (tested combinations):
FluentTheme+FluentAvalonia→ use FluentAvaloniaTheme (it includes Fluent base)FluentTheme+Ursa.AvaloniaSemi.Avalonia+Ursa.Avalonia(+ Irihi.Ursa.Themes.Semi bridge)- Any theme +
Citrus.Avaloniafor table/scroll polish - Any theme + an icon library (
Lucide.Avalonia,Material.Icons.Avalonia,Projektanker.Icons.Avalonia)
Forbidden (visual chaos):
Material.Avalonia+FluentAvaloniaTheme(different design systems)SukiUI+Material.Avalonia- More than one base theme of the same kind
- Mixing two icon families in the same view (pick one per app)
Theme Selection Workflow
- Identify product type → pick from matrix above.
- Install minimum NuGets (1 base theme, optional 1 control library, 1 icon library).
- Set
RequestedThemeVariant="Default"so OS preference wins by default. - Override only the accent color + neutral surface colors via theme dictionaries.
- Build app-specific Styles in
avares://MyApp/Styles/— never modify the theme NuGet. - Test light and dark variant before committing.
Common Mistakes
- Importing two base themes —
<FluentTheme/>after<FluentAvaloniaTheme/>causes brush conflicts. - Hardcoding theme NuGet brushes in views — they may be renamed in next version. Wrap them in your own semantic tokens.
- Forgetting
RequestedThemeVariant="Default"— app stays in light mode regardless of OS setting. - Restyling default controls in App.axaml when using SukiUI/Semi — overrides their styles and breaks intended look. Use Style classes instead.
- Copy-pasting theme brush keys without checking version — keys like
SystemAccentColorexist in FluentTheme but not all alternatives. - Wrapping a normal
WindowinSukiThemewithoutSukiWindow— content gets styled but the title bar stays native.