Installation¶
Warning
ReactiveUI drops a target framework after Microsoft ends support for it. .NET 8 and .NET 9 reach end of support on November 10, 2026, and .NET Framework 4.6.2 reaches end of support on January 12, 2027. Plan to move new and existing apps to .NET 10 or later, or to .NET Framework 4.7.2 or later.
Install the ReactiveUI package for your UI framework. It brings the core ReactiveUI package,
ReactiveUI.Binding for bindings and
ReactiveUI.SourceGenerators for properties and commands. One reference is enough
for an app project. A class library that holds only view models references ReactiveUI.
dotnet add package ReactiveUI.WPF
The suite installation guide covers the other libraries, and how to pick
between the default packages and the .Reactive packages for an app that uses System.Reactive.
Packages by platform¶
Each platform page shows how to install the package and start ReactiveUI when your app starts.
| Platform | ReactiveUI package | It brings | NuGet |
|---|---|---|---|
| Class libraries | ReactiveUI | ReactiveUI.Binding | |
| WPF | ReactiveUI.WPF | ReactiveUI.Binding.Wpf | |
| Windows Forms | ReactiveUI.WinForms | ReactiveUI.Binding.WinForms | |
| MAUI | ReactiveUI.Maui | ReactiveUI.Binding.Maui | |
| WinUI | ReactiveUI.WinUI | ReactiveUI.Binding | |
| Android (AndroidX) | ReactiveUI.AndroidX | ReactiveUI.Binding | |
| Blazor | ReactiveUI.Blazor | ReactiveUI.Binding | |
| Avalonia | ReactiveUI.Avalonia | ReactiveUI.Binding | |
| Uno Platform | ReactiveUI.Uno | ReactiveUI.Binding | |
| Unit tests | ReactiveUI.Testing |
ReactiveUI.Avalonia and ReactiveUI.Uno live in their own repositories,
reactiveui/ReactiveUI.Avalonia and
reactiveui/ReactiveUI.Uno. The other packages come from
reactiveui/ReactiveUI.
Bindings come from ReactiveUI.Binding¶
ReactiveUI runs WhenAnyValue, Bind, OneWayBind, BindCommand, ToProperty and view location on
ReactiveUI.Binding. You do not add a Binding package yourself. The ReactiveUI package also imports the
ReactiveUI.Binding namespace into your project, so your binding calls compile with no new using.
ReactiveUI.Binding writes the code for each binding while your project builds. Build once after you install, and read
any warning that starts with RXUIBIND. Each one names a binding that gets no generated code. The
analyzer messages list the fixes.
Moving from an earlier version? The ReactiveUI.Binding migration guide walks through the upgrade.
Source generators come with ReactiveUI¶
A source generator is a compiler add-on that writes C# code while your project builds.
ReactiveUI.SourceGenerators writes reactive properties and commands for you.
ReactiveUI 24.4 and later bring it through ReactiveUI.Core, so you do not install it yourself. Every project that
references ReactiveUI, ReactiveUI.Reactive or a platform package gets its generators and analyzers.
What you get:
- Five attributes:
[Reactive],[ReactiveCommand],[ReactiveCollection],[BindableDerivedList]and[IReactiveObject]. Addusing ReactiveUI.SourceGenerators;to each file that uses them. - Code that matches the package you reference. A
ReactiveUIproject getsReactiveCommand<RxVoid, T>. AReactiveUI.Reactiveproject getsReactiveUI.Reactive.ReactiveCommand<Unit, T>, with theUnittype from System.Reactive. - Analyzers that report an attribute the generators cannot handle.
[ObservableAsProperty] and view registration come from ReactiveUI.Binding, which ReactiveUI also brings.
A project that references a ReactiveUI.SourceGenerators version older than 4.0.0 fails to restore with error NU1605.
Remove that PackageReference, or set it to 4.0.0 or later.
Related packages¶
These packages add to ReactiveUI. Each has its own repository and its own section.
| Package | What it adds |
|---|---|
| ReactiveUI.Validation | Validation rules for view models |
| Sextant | Navigation that starts from the view model |
| ReactiveUI.Maui.Plugins.Popup | Reactive popup pages for MAUI |
Xamarin is no longer supported. See Xamarin to MAUI.
A typical solution¶
.
├── MyApp.Core (class library)
│ └── ReactiveUI
├── MyApp.Wpf
│ └── ReactiveUI.WPF
├── MyApp.WinUI
│ └── ReactiveUI.WinUI
├── MyApp.Maui
│ └── ReactiveUI.Maui
├── MyApp.Avalonia
│ └── ReactiveUI.Avalonia
└── MyApp.Tests
└── ReactiveUI.Testing
Minimum versions lists the platform versions ReactiveUI needs.