ReactiveUI.Binding.Reactive
10.0.0
Prefix Reserved
dotnet add package ReactiveUI.Binding.Reactive --version 10.0.0
NuGet\Install-Package ReactiveUI.Binding.Reactive -Version 10.0.0
<PackageReference Include="ReactiveUI.Binding.Reactive" Version="10.0.0" />
<PackageVersion Include="ReactiveUI.Binding.Reactive" Version="10.0.0" />
<PackageReference Include="ReactiveUI.Binding.Reactive" />
paket add ReactiveUI.Binding.Reactive --version 10.0.0
#r "nuget: ReactiveUI.Binding.Reactive, 10.0.0"
#:package ReactiveUI.Binding.Reactive@10.0.0
#addin nuget:?package=ReactiveUI.Binding.Reactive&version=10.0.0
#tool nuget:?package=ReactiveUI.Binding.Reactive&version=10.0.0
<div align="center">
<img src="images/logo.png" width="160" alt="ReactiveUI">
ReactiveUI.SourceGenerators
Compile-time code for ReactiveUI. No reflection. Trim and NativeAOT safe.
</div>
Two families of Roslyn source generators that work together:
| Attribute generators | Binding generators | |
|---|---|---|
| Package | ReactiveUI.SourceGenerators |
ReactiveUI.Binding (and platform packages) |
| You write | [Reactive], [ReactiveCommand], [IViewFor] |
WhenChanged, Bind, ToProperty, [ObservableAsProperty] |
| You get | Properties, commands, views, collections | Observations and bindings, with no expression trees |
| Guide | Attribute generators | Binding reference |
Quick start
Attributes. Mark a field. The property, its change notification and the command are written for you.
public partial class LoginViewModel : ReactiveObject
{
[Reactive] private string _userName = "";
[ReactiveCommand]
private void SignIn() { }
}
Binding. Name the path as a lambda. The generator writes the code that attaches to each link of it.
IObservable<string> city = viewModel.WhenChanged(x => x.Address.City);
view.OneWayBind(viewModel, x => x.UserName, v => v.NameLabel.Text);
Install
dotnet add package ReactiveUI.SourceGenerators # attribute generators
dotnet add package ReactiveUI.Binding # binding generators, no System.Reactive
dotnet add package ReactiveUI.Binding.Reactive # binding generators on System.Reactive
Reference one binding runtime package, not both. Add PrivateAssets="all" to ReactiveUI.SourceGenerators.
Packages
| Package | Purpose |
|---|---|
ReactiveUI.SourceGenerators |
Attribute generators |
ReactiveUI.Binding, ReactiveUI.Binding.Reactive |
Binding runtime, generator and analyzer |
ReactiveUI.Binding.Wpf, .WinForms, .Maui, .Avalonia, .Uno |
Platform property observation and view thread routing |
*.Reactive platform packages |
The same, for System.Reactive apps |
Requirements
| Attribute generators | Binding generators | |
|---|---|---|
| Language | C# 12 | C# 7.3 for generated code; interceptors need C# 11 |
| Compiler | Roslyn 4.8 or later | Roslyn 4.8 or later; interceptors need 4.13 |
| Runtime | .NET 10 and 11, .NET Framework 4.7 to 4.8.1 | The same |
Examples
Every example runs and prints what it does.
| Example | Shows |
|---|---|
| index | Your first binding |
| observing | WhenChanged, WhenAny, WhenAnyValue, WhenAnyObservable |
| bindings | One-way, two-way, command and interaction bindings |
| properties | ToProperty and [ObservableAsProperty] |
| converters | Built-in type converters |
| custom-converters | Writing your own converters |
| mechanisms | How a property reports a change |
| views | The view locator and IViewFor<T> |
| threading | Which thread a binding writes on |
| xaml | Controls named in MAUI and Avalonia XAML |
| sourcegenerators | Binding to members the attribute generators write |
| unsafe | Run-time expressions |
| setup | Configuration, analyzer and NativeAOT |
| Execute | The attribute generators in use |
| ToPropertyVerification | ToProperty on every runtime target |
| PlatformBindingsVerification | ToProperty feeding real WPF, WinForms and MAUI controls |
Documentation
| Topic | Where |
|---|---|
| Attribute generators | src/ReactiveUI.SourceGenerators |
| Binding reference: APIs, diagnostics, threading, differences from ReactiveUI | docs/ReactiveUI.Binding.md |
| Benchmarks and current figures | src/benchmarks |
| Contributing and repository layout | CLAUDE.md |
| ReactiveUI handbook | reactiveui.net |
Core team
<table> <tbody> <tr> <td align="center" valign="top"> <img width="100" height="100" src="https://github.com/ChrisPulman.png?s=150"> <br> <a href="https://github.com/ChrisPulman">Chris Pulman</a> <p>London, UK</p> </td> <td align="center" valign="top"> <img width="100" height="100" src="https://github.com/glennawatson.png?s=150"> <br> <a href="https://github.com/glennawatson">Glenn Watson</a> <p>Melbourne, Australia</p> </td> </tr> </tbody> </table>
Contribute
The project uses the MIT license. Everyone is welcome, including first-time contributors.
- Answer questions on GitHub Discussions
- Improve the docs where something is missing or unclear.
- Contribute code. Read CLAUDE.md first.
Credits
Portions of this code are derived from PolySharp and the Microsoft MVVM Community Toolkit.
Sponsors
JetBrains supports ReactiveUI's maintainers through its open source programme. Anthropic supports them with Claude, and OpenAI with Codex.
See our sponsors. All names and logos belong to their owners.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-ios26.0 is compatible. net10.0-maccatalyst was computed. net10.0-maccatalyst26.0 is compatible. net10.0-macos was computed. net10.0-macos26.0 is compatible. net10.0-tvos was computed. net10.0-tvos26.0 is compatible. net10.0-windows was computed. net11.0 is compatible. net11.0-ios27.2 is compatible. net11.0-maccatalyst27.2 is compatible. net11.0-macos27.2 is compatible. net11.0-tvos27.2 is compatible. |
| .NET Framework | net47 is compatible. net471 is compatible. net472 is compatible. net48 is compatible. net481 is compatible. |
-
.NETFramework 4.7
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
.NETFramework 4.7.1
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
.NETFramework 4.7.2
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
.NETFramework 4.8
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
.NETFramework 4.8.1
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
net10.0
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
net10.0-ios26.0
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
net10.0-maccatalyst26.0
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
net10.0-macos26.0
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
net10.0-tvos26.0
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
net11.0
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
net11.0-ios27.2
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
net11.0-maccatalyst27.2
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
net11.0-macos27.2
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
-
net11.0-tvos27.2
- ReactiveUI.Primitives.Reactive (>= 10.0.0)
- Splat (>= 22.0.1)
- System.Reactive (>= 7.0.0)
NuGet packages (29)
Showing the top 5 NuGet packages that depend on ReactiveUI.Binding.Reactive:
| Package | Downloads |
|---|---|
|
ReactiveUI.Reactive
ReactiveUI recompiled against System.Reactive's Unit for seamless interop with System.Reactive consumers. |
|
|
ReactiveUI.Binding.Avalonia.Reactive
Avalonia platform support for ReactiveUI.Binding.Reactive, for consumers on System.Reactive. |
|
|
ReactiveUI.Testing.Reactive
Provides extensions for testing ReactiveUI applications against System.Reactive, including Microsoft.Reactive.Testing TestScheduler support. |
|
|
Runic.Navigation.ReactiveUI.Reactive
System.Reactive-flavor observables, commands and interaction leave confirmation for Runic.Navigation regions and entries. |
|
|
Runic.Application.Views.ReactiveUI.Reactive
System.Reactive-flavor ReactiveUI model-context scheduling, routing, view location, and activation for Runic Views. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.0 | 0 | 11/15/2026 |
| 9.1.0 | 46,791 | 10/4/2026 |
| 9.0.0 | 336 | 10/3/2026 |
| 8.8.1 | 291 | 10/1/2026 |
| 8.8.0 | 9,484 | 9/28/2026 |
| 8.7.0 | 376 | 9/28/2026 |
| 8.6.0 | 439 | 9/27/2026 |
| 8.5.0 | 271 | 9/27/2026 |
| 8.4.0 | 321 | 9/26/2026 |
| 8.3.0 | 202 | 9/26/2026 |
| 8.2.0 | 195 | 9/26/2026 |
| 8.1.0 | 243 | 9/26/2026 |
| 8.0.0 | 148 | 9/26/2026 |
| 7.11.0 | 147 | 9/25/2026 |
| 7.10.1 | 347 | 9/25/2026 |
| 7.10.0 | 180 | 9/25/2026 |
| 7.9.0 | 155 | 9/25/2026 |
| 7.8.0 | 173 | 9/25/2026 |
| 7.7.0 | 163 | 9/24/2026 |
| 7.6.0 | 161 | 9/23/2026 |