Toggle navigation
Overview
Contributing
Build Artifacts
Show / Hide Table of Contents
Search
K
Get Started
Setup
Visual Studio 2022 for Windows
VS Code
Rider
Create an App
Visual Studio 2022 for Windows
VS Code
Rider
Write your app
App Structure
Hot Reload
Troubleshoot
Overview
Sign in with Uno Platform
Hot Reload
Development Environments
All Development Environments
Visual Studio 2022 for Windows
VS Code
Rider
Platforms
Web
Assembly
UWP
Skia (Gtk/Wpf/Framebuffer)
i
OS/mac Catalyst
Build Errors
Troubleshooting build errors
Build error codes
Samples & Tutorials
Overview
Counter
Counter App
XAML + MVUX
XAML + MVVM
C# Markup + MVUX
C# Markup + MVVM
Hot Design
Simple Calc
Simple Calc App
Getting Started
XAML + MVUX
01 Build your first project
02 Import UI from Figma
03 Creating the Layout
04 App Architecture
05 Finish the App
XAML + MVVM
01 Build your first project
02 Import UI from Figma
03 Creating the Layout
04 App Architecture
05 Finish the App
C# Markup + MVUX
01 Build your first project
02 Import UI from Figma
03 Creating the Layout
04 App Architecture
05 Finish the App
C# Markup + MVVM
01 Build your first project
02 Import UI from Figma
03 Creating the Layout
04 App Architecture
05 Finish the App
Tube Player
01 - Getting Started
02 - Creating basic UI layout with C# markup
03 - Connect UI with mock data
04 - Importing UI from Figma
05 - Creating the UI
06 - Theme Overrides
07 - Navigation
08 - Add API endpoints
09 - Feed
View Templates
10 - Media Player
11 - Finalization
Tutorials
Overview
How to deploy a Web
Assembly app on Azure Static Web Apps
How to use Windows Community Toolkit
Windows Community Toolkit - Version 8.
x
Windows Community Toolkit - Version 7.
x
How to manually add a splash screen
How to use native Frame navigation
How to consume a web API
How to localize text resources
How to change app language at runtime
How to integrate Signal
R
How to update Status
Bar color based on dark/light theme
How to use MSAL for Azure Authentication
How to authenticate with Open
ID Connect
How to implement a sign-in with Apple Button
Embed a Java
Script Component
Part 1
Part 2
Part 3
Deploy to Raspberry Pi
(Wasm) Handling custom HTML events
Community Tutorials
Samples
Additional Resources
Overview
Intro
Architecture
Supported Platforms
.
NET Versions
Working with Skia Desktop
Working with the Linux Framebuffer
Philosophy
How Uno Works
Best practices
Authoring
Using the Uno.
SDK
Platform-specific C# code
Platform-specific XAML markup
Creating Custom Controls
Control Libraries
Adding New Platforms
Getting Started With Tests
Logging
App
Manifest (Web
Assembly)
Hosting a Web
Assembly app
Using Skia Desktop (mac
OS)
Legacy Topics
Working with Skia+GTK
Debugging
How to create a repro sample
Debugging C# on WASM
VS Code Advanced Mobile Debugging
Generic Unhandled Exceptions handler
Debugging Troubleshooting
Embedding
Uno Platform in WPF
Native Views with Mobile
Native Views with Skia
Upgrading
Upgrading Nu
Get Packages
Upgrading from previous releases
Upgrading to Single Project
Upgrading to Uno 5.
0
Upgrading from .
NET 8 to .
NET 9
Upgrading from .
NET 7 to .
NET 8
Upgrading from Xamarin to .
NET 6
Upgrading to Win
UI 3.
0
Migrating
Xamarin Forms
Overview
Uno Platform for Xamarin.
Forms developers
Migrating Animations
Migrating Custom Controls
Migrating Custom-Drawn Controls
Migrating Data Binding
Migrating Effects
Migrating Navigation
Migrating Renderers
WPF
Migrating WPF Apps to Web
UWP-only code
Overview
Checklist
Applications
Class libraries
General guidance
Silverlight
Overview
Silverlight to Uno Migration
Create the Uno solution for UWP and WASM
Considering navigation
Reviewing the app startup
Migrating the home page XAML and styles
Switching to string resources
Dialogs and errors
Data access services
Client Authentication
Implementing a singleton token service
Implementing an identity service client
Migrating the authentication UI
Integrating authentication and navigation
Implement the time entry service
Migrating the time entry UI
Wrap-up
The Time
Entry Sample apps
Useful resources
Publishing
Overview
Publishing for Desktop
Publishing Your App for Desktop
Publishing Your App for mac
OS
Publishing Your App for mac
OS - Advanced Topics
Publishing Your App for Linux
Publishing for Web
Assembly
Publishing for Windows App SDK
Build Packaged Unsigned Apps
Build Packaged Signed Apps
Build Unpackaged Apps
Publishing for i
OS
Publishing for Android
Publishing for Mac Catalyst
Performance
Improving Build Times
Performance tips
Memory Profiling
How to profile applications
IL Linker for Web
Assembly
Working with String Resource Trimming
Working with XAML Trimming
Error Monitoring & Crash Reporting with Raygun
Contributing
Overview
Code of Conduct
Ways to contribute
How Uno works
Overview
Android
Layouting in Android
i
OS
Layouting in i
OS
WASM
mac
OS
Dependency
Property backing generator
x:Bind in Uno Platform
List
View
Base
Theme
Resource
Interaction
Tracker internals
Building Uno.
UI
Debugging Uno.
UI
Building Uno.
UI for mac
OS using Visual Studio for Mac
Using Codespaces
Using Gitpod
Inspecting the visual tree
Guidelines for code style
Using the Samples
App
Guidelines for creating tests
Overview
Mocked unit tests (Uno.
UI.
Tests)
Platform-runtime unit tests (Uno.
UI.
Runtime
Tests)
UI tests with Uno.
UITest
Debugging Solution Templates
Conventional Commits format
Guidelines for pull-requests
Guidelines for breaking changes
Guidelines for updating dependencies
Guidelines for issue triage
Guidelines for implementing a new Win
UI/Win
RT feature
Adding documentation
Doc
FX
Uno.
UI release procedure
Build Artifacts
Advanced topics
Adding functionality with API extensions
The Weak
Event
Helper class
Debugging Uno.
UI Java code with Android studio
Converting the source tree to UWP
Troubleshooting Memory Issues
Troubleshooting Source Generation
The XAML Trimming phase
Hot Reload internals
Why use Uno Platform?
FAQ
Studio
Overview
Hot Reload
Hot Design
Overview
Getting Started with Hot Design
Counter Tutorial
Design-to-Code
Get Started
Intro
Setup
Design to Code
Create an App
Overview
Downloads & Tools
Design with Uno Figma Material Toolkit
Building a simple login page
Starting a New Design and General Tips
Colors
Custom Colors
DSP Import
Themes
Semantic Fonts
Images
Page Templates
Components
Lists
Items Repeater
Chips
Navigation
Tabs
Type Scale Overrides
Overrides
Exporting Assets
The Uno Figma Plugin
Properties Tab
Preview Tab
Export Tab
Data
Context Tab
Console Tab
Settings Tab
Custom Colors
Custom Components
Subscription Plan
FAQ
Data Policy
Reference
Components
Button
Radio
Button
Combo
Box
Check
Box
FAB
Icon
Toggle
Button
Icon
Button
Hyperlink
Button
Slider
Rating
Control
Toggle
Switch
Chip
Card
Image
List
Item
Swipe
Control
Date
Picker
Dialog
Navigation Bar
Bottom Navigation Bar
Bottom Bar
Tab Bar
Divider
Media
Player
Person
Picture
Pips
Pager
Progress Ring
Progress Bar
Status Bar
Keyboard
Password
Box
Text
Box
Text Block
Feedback
Reference
Overview
Developing with Uno Platform
Features List
Feature Flags
WinUI Compatibility
Differences From Win
UI
About Not
Implemented members
Uno and Win
UI 3
Win
App
SDK Specifics
WinUI links
Overview
Tutorials
Development
Design
UI
Controls
Implemented Views
Animated
Icon
Animated
Visual
Player
App
Bar
App
Bar
Button
App
Bar
Element
Container
App
Bar
Separator
App
Bar
Toggle
Button
Auto
Suggest
Box
Bitmap
Icon
Border
Breadcrumb
Bar
Breadcrumb
Bar
Item
Button
Button
Base
Calendar
Date
Picker
Calendar
Panel
Calendar
View
Calendar
View
Day
Item
Canvas
Carousel
Panel
Check
Box
Color
Picker
Color
Picker
Slider
Color
Spectrum
Combo
Box
Combo
Box
Item
Command
Bar
Command
Bar
Overflow
Presenter
Content
Control
Content
Dialog
Content
Presenter
Control
Date
Picker
Date
Picker
Flyout
Presenter
Drop
Down
Button
Ellipse
Expander
Flip
View
Flip
View
Item
Flyout
Presenter
Font
Icon
Frame
Framework
Element
Grid
Grid
View
Grid
View
Header
Item
Grid
View
Item
Grid
View
Item
Presenter
Hyperlink
Button
Icon
Element
Icon
Source
Element
Image
Image
Icon
Info
Badge
Info
Bar
Info
Bar
Panel
Item
Container
Items
Control
Items
Presenter
Items
Repeater
Items
Repeater
Scroll
Host
Items
Stack
Panel
Items
View
Items
Wrap
Grid
Line
List
View
List
View
Base
List
View
Base
Header
Item
List
View
Header
Item
List
View
Item
List
View
Item
Presenter
Looping
Selector
Looping
Selector
Item
Looping
Selector
Panel
Media
Player
Element
Media
Player
Presenter
Media
Transport
Controls
Menu
Bar
Menu
Bar
Item
Menu
Flyout
Item
Menu
Flyout
Item
Base
Menu
Flyout
Presenter
Menu
Flyout
Separator
Menu
Flyout
Sub
Item
Monochromatic
Overlay
Presenter
Navigation
View
Navigation
View
Item
Navigation
View
Item
Base
Navigation
View
Item
Header
Navigation
View
Item
Presenter
Navigation
View
Item
Separator
Number
Box
Page
Panel
Password
Box
Path
Path
Icon
Person
Picture
Pips
Pager
Pivot
Pivot
Header
Item
Pivot
Header
Panel
Pivot
Item
Pivot
Panel
Polygon
Polyline
Popup
Progress
Bar
Progress
Ring
Radio
Button
Radio
Buttons
Radio
Menu
Flyout
Item
Range
Base
Rating
Control
Rectangle
Refresh
Container
Refresh
Visualizer
Relative
Panel
Repeat
Button
Rich
Edit
Box
Rich
Text
Block
Overflow
Scroll
Bar
Scroll
Content
Presenter
Scroll
Presenter
Scroll
View
Scroll
Viewer
Selector
Selector
Bar
Selector
Bar
Item
Selector
Item
Shape
Slider
Split
Button
Split
View
Stack
Panel
Swipe
Control
Symbol
Icon
Tab
View
Tab
View
Item
Tab
View
List
View
Teaching
Tip
Text
Block
Text
Box
Thumb
Tick
Bar
Time
Picker
Time
Picker
Flyout
Presenter
Toggle
Button
Toggle
Menu
Flyout
Item
Toggle
Split
Button
Toggle
Switch
Tool
Tip
Tree
View
Tree
View
Item
Tree
View
List
Two
Pane
View
UIElement
User
Control
Variable
Sized
Wrap
Grid
Viewbox
Virtualizing
Panel
Web
View2
Wrap
Grid
Uno Specifics
Adaptive
Trigger
Activities in Android
Combo
Box
Command
Bar
Date
Picker
Elevated
View
Fluent icon font
Flyout
Frame
GLCanvas
Element
Image
List
View and Grid
View
Lottie animations
Map
Control
Media
Player
Element
Menu
Flyout
Navigation
View
Native control styles
Other features
Pivot
Popup
Progress
Ring
Refresh
Container (Pull to Refresh)
Scroll
Viewer
SKCanvas
Element
Text
Box
Time
Picker
Toggle
Switch
URI Protocol activation
Using pointer cursors
Using SVG images
Visible
Bounds
Padding
Web
View (Web
View2)
Features
Accessibility
Animations
Assets and image display
Build telemetry
Composition API
Dialogs
Fluent styles
Focus management
Fonts
Markup Extensions
Native frame navigation
Orientation
Routed Events
Shapes & Brushes
String resources and localization
Succinct syntax
Themes
User inputs - Keyboard, Pointers, Gestures, Manipulations, Drag and drop
Using Fluent styles in legacy apps
Windowing
x:Bind
3rd-party libraries
Non-UI
Accelerometer
Android TV
App Actions
App Close Handler
App Suspension
Application Data and Settings
Badge Notifications
Barometer
Battery Information
Bluetooth
Capture (Camera)
Clipboard
Compass
Contacts
Credential Storage
Device Enumeration
Device Information
E-mail
File and Folder Pickers
File Management
Flashlight
Gamepad
Geolocation (GPS)
Gyrometer
Haptics
Hardware back button
Keeping Screen On
Light Sensor
Magnetometer
MIDI
Network Information
Orientation Sensor
Package Information
Phone Calls
Proximity Sensor
Settings
Sharing
SMS
Speech Recognition
Step Counter
Store Context
Title Bar Customization
URI Launcher
Vibration
Wallpaper and Lock Screen
Web Authentication Broker
Working with cookies
Extensions
Overview
Uno.
Extensions Overview
How-To: Getting Started
Upgrading Extensions Version
Authentication
Overview
How-To: Get started with authentication
How-To: Use MSAL authentication
How-To: Use OIDC authentication
How-To: Use web authentication
How-To: Authorize with cookies
Configuration
Overview
How-To: Get started with configuration
How-To: Save settings using IWritable
Options
Dependency Injection
Overview
How-To: Get started with dependency injection
How-To: Resolve Dependencies with Community
Toolkit.
Mvvm
Hosting
Overview
How-To: Get started with hosting
Http
Overview
How-To: Get started with Http
How-To: Use Refit to call a REST API
How-To: Configure with endpoint options
Localization
Overview
How-To: Get started with localization
Logging
Overview
How-To: Get started with logging
How-To: Enable internal Uno Platform logging
Navigation
Overview
How-To: Get started with navigation
How-To: Navigate via code behind
How-To: Navigate via XAML
How-To: Define Routes
How-To: Define Regions
How-To: Display a message dialog
How-To: Request a value
How-To: Display a Dialog (modal or flyout)
How-To: Display an item
Advanced
How-To: Modify the back-stack
How-To: Navigate using a Tab
Bar
How-To: Navigate using a Navigation
View
How-To: Navigate using a responsive shell
How-To: Navigate inside Panel (Grid, Stack
Panel etc)
How-To: Navigate using a Content
Control
How-To: Use IRoute
Notifier to Handle Route Changes
Serialization
Overview
How-To: Get started with serialization
Storage
Overview
How-To: Add Required Entitlements
Validation
Overview
C# Markup
Overview
Upgrading
Binding, Static & Theme Resources
Binding 101
Source and Relative Source
Converters
Using Static & Theme Resources
Using Uno.
Themes.
Win
UI.
Markup
Attached Properties
Resource Dictionaries
Styles
Templates
Visual
State
Manager
Storyboards
Using and Generating Extensions
Appendix
Text
Block Run
Accessing a Control Instance
MVUX
Overview
Upgrading Extensions Reactive
How-To: Get started with MVUX
Working with Records
List-States
The Feed
View control
How-To: Create a Feed
How-To: Create a List-Feed
How-To: Create a push-style List-Feed with Async Enumerable
How-To: Create a State
Advanced topics
Selection
Pagination
Messaging
Commands
Inspecting the generated code
.
NET MAUI Embedding
Overview
How-To: Use Arc
GIS Controls
How-To: Use Dev
Express Controls
How-To: Use Grape
City Controls
How-To: Use Grial
Kit Controls
How-To: Use .
NET MAUI Community Toolkit
How-To: Use Syncfusion Controls
How-To: Use Telerik Controls
Theme Service
Reference
MVUX
Overview
General guidelines
Feed
List
Feed
State
Usage in applications
Testing
Feeds Architecture
Analysis rules
Navigation
Design
Navigation Region
Qualifiers
INavigator
Implement IRequest
Handler
Themes
Overview
Material
Upgrading Uno Material
Cupertino
Fluent
Lightweight Styling
Control Extensions
Reference
Material
Material Colors, Opacities and Brushes
Material Control Styles
Material Colors Overrides from DSP file
Cupertino
Cupertino Control Styles
Lightweight Styling
App
Bar
Button
Button
Check
Box
Combo
Box
Date
Picker
Floating
Action
Button
Hyperlink
Button
Navigation
View
Password
Box
Pips
Pager
Progress
Bar
Progress
Ring
Radio
Button
Rating
Control
Slider
Text
Box
Toggle
Button
Toggle
Switch
Text
Block
Toolkit
Overview
Material
Upgrading Material Toolkit
Cupertino
Lightweight Styling
Reference
Controls
Auto
Layout
Cards
Chip and Chip
Group
Divider
Drawer
Control
Drawer
Flyout
Presenter
Extended
Splash
Screen
Loading
View
Navigation
Bar
Responsive
View
Safe
Area
Shadow
Container
Tab
Bar and Tab
Bar
Item
Zoom
Content
Control
Helpers
Ancestor
Binding and Items
Control
Binding
Command
Extensions Extensions
Flip
View Extensions
Input
Extensions Extensions
Items
Repeater Extensions
Progress Extensions
Responsive markup extension
Resource Extensions
Selector Extensions
Status
Bar Extensions
System
Theme
Helper
Tab
Bar
Item Extensions
Visual
State
Manager Extensions
Styles
Tooling
Uno WebAssembly Bootstrapper
Using the bootstrapper
Debugger support
Deploy and publish
Linker configuration
Runtime Execution Modes
Features
Using additional files
Interoperating with Javascript
Security
Javascript Dependency management
Environment Variables
Splash screen
Threading
Deep linking (routing)
IDBFS Support
Pre-compression
Embedded mode
Native Linker Optimization
Memory troubleshooting
Module Linking
SIMD Support
Profiling
PWA Support
4GB Support
Http
Request
Message Extensions
Tools
Uno Version Checker
Contributing
Uno Check
Using Uno Check
Configuring Uno Check
Troubleshooting
Xaml Merging
Using Uno.
Xaml
Merge.
Task
Troubleshooting the Uno.
Xaml
Merge.
Task generation
Uno Resizetizer
Using Uno Resizetizer
Properties avaliable on Uno Resizetizer
Uno.UITest
Using Uno.
UITest
VS Code Extension
Visual Studio Code Extension
C# Dev Kit Support
Omnisharp Support
Rider
License Agreement
Templates
Visual Studio Wizard
dotnet new Templates
Get started wizard
Build artifacts
Uno publishes a new
pre-release build to NuGet
after every merge to master.
Edit this page
In this article