Uno.Microsoft.UI.Reactor
0.1.0-dev.115
Prefix Reserved
See the version list below for details.
dotnet add package Uno.Microsoft.UI.Reactor --version 0.1.0-dev.115
NuGet\Install-Package Uno.Microsoft.UI.Reactor -Version 0.1.0-dev.115
<PackageReference Include="Uno.Microsoft.UI.Reactor" Version="0.1.0-dev.115" />
<PackageVersion Include="Uno.Microsoft.UI.Reactor" Version="0.1.0-dev.115" />
<PackageReference Include="Uno.Microsoft.UI.Reactor" />
paket add Uno.Microsoft.UI.Reactor --version 0.1.0-dev.115
#r "nuget: Uno.Microsoft.UI.Reactor, 0.1.0-dev.115"
#:package Uno.Microsoft.UI.Reactor@0.1.0-dev.115
#addin nuget:?package=Uno.Microsoft.UI.Reactor&version=0.1.0-dev.115&prerelease
#tool nuget:?package=Uno.Microsoft.UI.Reactor&version=0.1.0-dev.115&prerelease
Uno.Microsoft.UI.Reactor
Microsoft.UI.Reactor, the functional, declarative UI framework for WinUI 3, on Uno Platform. You write components and hooks in C#, with no XAML, and the same code runs on desktop (Windows, macOS, Linux), WebAssembly, Android and iOS.
For a Windows App SDK app, use Microsoft's Microsoft.UI.Reactor package instead. This package doesn't target the Windows App SDK.
Requirements
- The .NET SDK 10.0.400 or later.
- Uno.Sdk
7.0.0-dev.104or later, with the Skia renderer. You don't reference this package yourself: addReactortoUnoFeaturesand the Uno.Sdk brings in the version it was released with.
A new app
Install the Uno templates and create an app from unoapp-reactor:
dotnet new install Uno.Templates@7.0.0-dev.104
dotnet new unoapp-reactor -n MyApp
cd MyApp
dotnet run -f net10.0-desktop
Any later Uno.Templates works too; a plain dotnet new install Uno.Templates installs the latest stable templates, which don't have unoapp-reactor yet.
The app targets desktop, WebAssembly, Android and iOS. Pick fewer with -platforms, for example -platforms desktop wasm.
A single-file app
Save this as Counter.cs and run dotnet run Counter.cs:
#:sdk Uno.Sdk@7.0.0-dev.113
#:property TargetFramework=net10.0-desktop
#:property OutputType=Exe
#:property UnoSingleProject=true
#:property UnoFeatures=SkiaRenderer;Reactor
#:property PublishAot=false
#:property PackAsTool=false
using Microsoft.UI.Reactor;
using Microsoft.UI.Reactor.Core;
using static Microsoft.UI.Reactor.Factories;
ReactorApp.Run<CounterApp>("Counter", width: 480, height: 360);
class CounterApp : Component
{
public override Element Render()
{
var (count, setCount) = UseState(0);
return VStack(12,
Heading($"Count: {count}"),
HStack(8,
Button("-", () => setCount(count - 1)),
Button("+", () => setCount(count + 1))
)
).Padding(24);
}
}
The #:sdk line pins the Uno.Sdk, and with it the Reactor version: a lone file has no global.json to do it. Single-file apps run on desktop only for now.
In an existing Uno project
Add Reactor to UnoFeatures in a single Uno project that uses the Skia renderer:
<UnoFeatures>
SkiaRenderer;
Reactor;
</UnoFeatures>
Pin Uno.Sdk 7.0.0-dev.104 or later in its global.json. The feature first shipped in 7.0.0-dev.97; an Uno.Sdk older than that ignores it without a warning, and the build then fails with CS0234 on Microsoft.UI.Reactor.
Remove the Windows target framework (net10.0-windows10.0.x) from the project: with Reactor in UnoFeatures, that target fails with UNOB0031, since this package doesn't target the Windows App SDK.
Every target starts the app with ReactorApp.Run<TRoot>(...), as above, Android included: Android never calls Main on its own, so the package adds the Android Application and launcher Activity that run it, with the app's icon and splash screen. An app that keeps its own NativeApplication sets <ReactorAndroidEntry>false</ReactorAndroidEntry> and returns ReactorApp.CreateHost<TRoot>(...) from its CreateHost.
Another Reactor version
To use a different version of this package than the one your Uno.Sdk brings in, set UnoReactorVersion: <UnoReactorVersion>x.y.z</UnoReactorVersion> in the project, or #:property UnoReactorVersion=x.y.z in a single file.
Learn more
- Reactor on Uno Platform: what works on each target, and what Uno doesn't implement yet.
- Reactor guide: components, hooks, layout and controls. It is written for Windows, but the API is the same.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-android36.0 is compatible. net10.0-browserwasm1.0 is compatible. net10.0-desktop1.0 is compatible. net10.0-ios26.0 is compatible. |
-
net10.0-android36.0
- MessageFormat (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.9)
- Uno.WinUI (>= 7.0.0-dev.2509)
-
net10.0-browserwasm1.0
- MessageFormat (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.9)
- Uno.WinUI (>= 7.0.0-dev.2509)
-
net10.0-desktop1.0
- MessageFormat (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.9)
- Uno.WinUI (>= 7.0.0-dev.2509)
-
net10.0-ios26.0
- MessageFormat (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.9)
- Uno.WinUI (>= 7.0.0-dev.2509)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-dev.116 | 0 | 10/30/2026 |
| 0.1.0-dev.115 | 0 | 10/30/2026 |
| 0.1.0-dev.105 | 46 | 10/29/2026 |
| 0.1.0-dev.98 | 75 | 10/29/2026 |
| 0.1.0-dev.89 | 96 | 10/28/2026 |
| 0.1.0-dev.88 | 46 | 10/28/2026 |
| 0.1.0-dev.85 | 39 | 10/28/2026 |
| 0.1.0-dev.82 | 44 | 10/28/2026 |
| 0.1.0-dev.81 | 63 | 10/28/2026 |
| 0.1.0-dev.79 | 45 | 10/28/2026 |
| 0.1.0-dev.77 | 47 | 10/28/2026 |
| 0.1.0-dev.74 | 49 | 10/27/2026 |