![]() |
VOOZH | about |
dotnet add package ReactiveUI.Maui.Reactive --version 24.0.0-beta.2
NuGet\Install-Package ReactiveUI.Maui.Reactive -Version 24.0.0-beta.2
<PackageReference Include="ReactiveUI.Maui.Reactive" Version="24.0.0-beta.2" />
<PackageVersion Include="ReactiveUI.Maui.Reactive" Version="24.0.0-beta.2" />Directory.Packages.props
<PackageReference Include="ReactiveUI.Maui.Reactive" />Project file
paket add ReactiveUI.Maui.Reactive --version 24.0.0-beta.2
#r "nuget: ReactiveUI.Maui.Reactive, 24.0.0-beta.2"
#:package ReactiveUI.Maui.Reactive@24.0.0-beta.2
#addin nuget:?package=ReactiveUI.Maui.Reactive&version=24.0.0-beta.2&prereleaseInstall as a Cake Addin
#tool nuget:?package=ReactiveUI.Maui.Reactive&version=24.0.0-beta.2&prereleaseInstall as a Cake Tool
π Build
π Code Coverage
π #yourfirstpr
π alternate text is missing from this package README image
<br> <a href="https://github.com/reactiveui/reactiveui"> <img width="160" heigth="160" src="https://raw.githubusercontent.com/reactiveui/styleguide/master/logo/main.png"> </a> <br>
ReactiveUI is a composable, cross-platform model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming, which is a paradigm that allows you to abstract mutable state away from your user interfaces and express the idea around a feature in one readable place and improve the testability of your application.
π¨ Get Started π Install Packages π Watch Videos π View Samples π€ Discuss ReactiveUI
There has been an excellent book written by our Alumni maintainer Kent Boogart.
Install the following packages to start building your own ReactiveUI app. <b>Note:</b> some of the platform-specific packages are required. This means your app won't perform as expected until you install the packages properly. See the <a href="https://reactiveui.net/docs/getting-started/installation/">Installation</a> docs page for more info.
| Platform | ReactiveUI Package | NuGet |
|---|---|---|
| .NET Standard | ReactiveUI | π CoreBadge |
| Any | ReactiveUI.SourceGenerators | π SGBadge |
| Unit Testing | ReactiveUI.Testing | π TestBadge |
| WPF | ReactiveUI.WPF | π WpfBadge |
| WinUI | ReactiveUI.WinUI | π WinUiBadge |
| MAUI | ReactiveUI.Maui | π MauiBadge |
| Windows Forms | ReactiveUI.WinForms | π WinBadge |
| AndroidX | ReactiveUI.AndroidX | π DroXBadge |
| Blazor | ReactiveUI.Blazor | π BlazBadge |
| Platform Uno | ReactiveUI.Uno | π UnoBadge |
| Platform Uno | ReactiveUI.Uno.WinUI | π UnoWinUiBadge |
| Avalonia | ReactiveUI.Avalonia | π AvaBadge |
| Any | ReactiveUI.Validation | π ValBadge |
| Any | ReactiveUI.Extensions | π ExtBadge |
ReactiveUI ships in two interchangeable distributions with an identical public API, both built on the same ReactiveUI.Primitives engine and the same high-performance custom schedulers/sinks. The only difference is which reactive interop types appear in the public API β so you pick a distribution, you don't rewrite code:
| You want⦠| Reference these packages | Public reactive types |
|---|---|---|
| The new, lighter default (no System.Reactive dependency) | ReactiveUI, ReactiveUI.Wpf, ReactiveUI.WinForms, ReactiveUI.WinUI, ReactiveUI.Maui, ReactiveUI.Blazor, ReactiveUI.AndroidX, β¦ |
ReactiveUI.Primitives β RxVoid, ISequencer, Signal<T> |
| Drop-in interop with existing System.Reactive code | ReactiveUI.Reactive, ReactiveUI.Wpf.Reactive, ReactiveUI.WinForms.Reactive, ReactiveUI.WinUI.Reactive, ReactiveUI.Maui.Reactive, ReactiveUI.Blazor.Reactive, β¦ |
System.Reactive β Unit, IScheduler |
The .Reactive family is not "old ReactiveUI" β it runs on the exact same Primitives engine and custom
schedulers as the default and simply surfaces System.Reactive.Unit/IScheduler (and Subject<T>) so it composes
with code that already uses System.Reactive.
The default distribution drops the System.Reactive dependency for a smaller closure and a better trimming/AOT
story, and is markedly faster on the hottest MVVM paths β in representative micro-benchmarks roughly 3β4Γ faster
on WhenAnyValue/ToProperty subscribe and emit, with 5β13Γ less allocation (for example WhenAnyValue emit
drops from ~6.8 MB to ~0.5 MB per run, and ToProperty construction from ~7.3 Β΅s to ~1.0 Β΅s). The fast schedulers
now live in ReactiveUI.Primitives and back both distributions.
If you take the default packages, note the public reactive types change: IScheduler β ISequencer,
System.Reactive.Unit β RxVoid, and Subject<T>/BehaviorSubject<T> β Signal<T>/BehaviorSignal<T>. To upgrade
with zero source changes, reference the matching *.Reactive packages instead β they keep IScheduler, Unit
and Subject<T>.
Core routing (RoutingState, IScreen, RoutedViewHost) stays in the main package, but the DynamicData change-set
routing/collection/auto-persist helpers now live in a separate ReactiveUI.Routing package (ReactiveUI.Routing.Reactive
for the System.Reactive flavor), so core no longer depends on DynamicData. Add ReactiveUI.Routing if you use those
extensions.
The ReactiveUI packages reference ReactiveUI.Primitives with ExcludeAssets="analyzers", so the analyzers that ship
inside ReactiveUI.Primitives do not flow to your project and will not run against your code just because you
installed ReactiveUI. We don't impose our analyzers on downstream consumers. If you want them, opt in explicitly by
adding a direct reference to ReactiveUI.Primitives (without excluding the analyzer assets), e.g.:
<PackageReference Include="ReactiveUI.Primitives" Version="x.y.z" />
The core team members, ReactiveUI contributors and contributors in the ecosystem do this open-source work in their free time. If you use ReactiveUI, a serious task, and you'd like us to invest more time on it, please donate. This project increases your income/productivity too. It makes development and applications faster and it reduces the required bandwidth.
As of May 2024, Microsoft ended support for Xamarin per their support policy. ReactiveUI has removed support for legacy Xamarin platforms in favor of modern .NET MAUI. For Xamarin projects:
ReactiveUI.MauiReactiveUI.AndroidX for native AndroidFor guidance on migrating from Xamarin to MAUI, see the official migration documentation.
ReactiveUI supports .NET 9 and .NET 10 for MAUI platforms:
net10.0-android / net9.0-androidnet10.0-ios / net9.0-iosnet10.0-maccatalyst / net9.0-maccatalystnet10.0-windows10.0.19041.0 / net9.0-windows10.0.19041.0Non-MAUI net8.0 library targets remain fully supported.
Platform-specific sample applications are included in :
| Sample | Platform | Description |
|---|---|---|
| WPF | Login form with reactive bindings, PasswordBox event marshaling | |
| WinForms | Login form with IViewFor, programmatic UI layout | |
| MAUI | Cross-platform login with Shell navigation, ReactiveContentPage | |
| WPF | Multi-instance chat app with routing, suspension, and network sync | |
| Blazor Server | Chat app with server-side Blazor and reactive components |
All samples target .NET 10, use RxAppBuilder for initialization, and demonstrate WhenActivated, Bind/
BindCommand, and proper subscription disposal.
This is how we use the donations:
If you have a question, please see if any discussions in our GitHub issues or Stack Overflow have already answered it.
If you want to discuss something or just need help, here is our Slack room, where there are always individuals looking to help out!
Please do not open GitHub issues for support requests.
ReactiveUI is developed under an OSI-approved open source license, making it freely usable and distributable, even for commercial use.
If you want to submit pull requests please first open a GitHub issue to discuss. We are first time PR contributors friendly.
See Contribution Guidelines for further information how to contribute changes.
<table> <tbody> <tr> <td align="center" valign="top" width="105"> <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> <td align="center" valign="top" width="105"> <img width="100" height="100" src="https://github.com/chrispulman.png?s=150"> <br> <a href="https://github.com/chrispulman">Chris Pulman</a> <p>United Kingdom</p> </td> </tr> <tr> <td align="center" valign="top" width="105"> <img width="100" height="100" src="https://github.com/rlittlesii.png?s=150"> <br> <a href="https://github.com/rlittlesii">Rodney Littles II</a> <p>Texas, USA</p> </td> <td align="center" valign="top" width="105"> <img width="100" height="100" src="https://github.com/cabauman.png?s=150"> <br> <a href="https://github.com/cabauman">Colt Bauman</a> <p>South Korea</p> </td> </tr> </tbody> </table>
The following have been core team members in the past.
<table> <tbody> <tr> <td align="center" valign="top" width="105"> <img width="100" height="100" src="https://github.com/ghuntley.png?s=150"> <br> <a href="https://github.com/ghuntley">Geoffrey Huntley</a> <p>Sydney, Australia</p> </td> <td align="center" valign="top" width="105"> <img width="100" height="100" src="https://github.com/kentcb.png?s=150"> <br> <a href="https://github.com/kentcb">Kent Boogaart</a> <p>Brisbane, Australia</p> </td> <td align="center" valign="top" width="105"> <img width="100" height="100" src="https://github.com/olevett.png?s=150"> <br> <a href="https://github.com/olevett">Olly Levett</a> <p>London, United Kingdom</p> </td> </tr> <tr> <td align="center" valign="top" width="105"> <img width="100" height="100" src="https://github.com/anaisbetts.png?s=150"> <br> <a href="https://github.com/anaisbetts">AnaΓ―s Betts</a> <p>San Francisco, USA</p> </td> <td align="center" valign="top" width="105"> <img width="100" height="100" src="https://github.com/shiftkey.png?s=150"> <br> <a href="https://github.com/shiftkey">Brendan Forster</a> <p>Melbourne, Australia</p> </td> <td align="center" valign="top" width="105"> <img width="100" height="100" src="https://github.com/clairernovotny.png?s=150"> <br> <a href="https://github.com/clairernovotny">Claire Novotny</a> <p>New York, USA</p> </td> </tr> <tr> <td align="center" valign="top" width="105"> <img width="100" height="100" src="https://github.com/worldbeater.png?s=150"> <br> <a href="https://github.com/worldbeater">Artyom Gorchakov</a> <p>Moscow, Russia</p> </td> </tr> </tbody> </table>
ReactiveUI is part of the .NET Foundation. Other projects that are associated with the foundation include the Microsoft .NET Compiler Platform ("Roslyn") as well as the Microsoft ASP.NET family of projects, and Microsoft .NET Core.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-android36.0 net10.0-android36.0 is compatible. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-ios26.0 net10.0-ios26.0 is compatible. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-maccatalyst26.0 net10.0-maccatalyst26.0 is compatible. net10.0-macos net10.0-macos was computed. net10.0-macos26.0 net10.0-macos26.0 is compatible. net10.0-tvos net10.0-tvos was computed. net10.0-tvos26.0 net10.0-tvos26.0 is compatible. net10.0-windows net10.0-windows was computed. net10.0-windows10.0.19041 net10.0-windows10.0.19041 is compatible. net11.0-android37.0 net11.0-android37.0 is compatible. net11.0-ios26.5 net11.0-ios26.5 is compatible. net11.0-maccatalyst26.5 net11.0-maccatalyst26.5 is compatible. net11.0-macos26.5 net11.0-macos26.5 is compatible. net11.0-tvos26.5 net11.0-tvos26.5 is compatible. net11.0-windows10.0.19041 net11.0-windows10.0.19041 is compatible. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 24.0.0-beta.2 | 0 | 6/29/2026 |
| 24.0.0-beta.1 | 82 | 6/26/2026 |