Skip to content

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.

PlatformReactiveUI packageIt bringsNuGet
Class librariesReactiveUIReactiveUI.BindingCoreBadge
WPFReactiveUI.WPFReactiveUI.Binding.WpfWpfBadge
Windows FormsReactiveUI.WinFormsReactiveUI.Binding.WinFormsWinBadge
MAUIReactiveUI.MauiReactiveUI.Binding.MauiMauiBadge
WinUIReactiveUI.WinUIReactiveUI.BindingWinUiBadge
Android (AndroidX)ReactiveUI.AndroidXReactiveUI.BindingDroXBadge
BlazorReactiveUI.BlazorReactiveUI.BindingBlazBadge
AvaloniaReactiveUI.AvaloniaReactiveUI.BindingAvaBadge
Uno PlatformReactiveUI.UnoReactiveUI.BindingUnoBadge
Unit testsReactiveUI.TestingTestBadge

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]. Add using ReactiveUI.SourceGenerators; to each file that uses them.
  • Code that matches the package you reference. A ReactiveUI project gets ReactiveCommand<RxVoid, T>. A ReactiveUI.Reactive project gets ReactiveUI.Reactive.ReactiveCommand<Unit, T>, with the Unit type 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.

These packages add to ReactiveUI. Each has its own repository and its own section.

PackageWhat it adds
ReactiveUI.ValidationValidation rules for view models
SextantNavigation that starts from the view model
ReactiveUI.Maui.Plugins.PopupReactive 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.