ReactiveUI.Testing 24.0.0-beta.1

Prefix Reserved
This is a prerelease version of ReactiveUI.Testing.
dotnet add package ReactiveUI.Testing --version 24.0.0-beta.1
                    
NuGet\Install-Package ReactiveUI.Testing -Version 24.0.0-beta.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ReactiveUI.Testing" Version="24.0.0-beta.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ReactiveUI.Testing" Version="24.0.0-beta.1" />
                    
Directory.Packages.props
<PackageReference Include="ReactiveUI.Testing" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ReactiveUI.Testing --version 24.0.0-beta.1
                    
#r "nuget: ReactiveUI.Testing, 24.0.0-beta.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ReactiveUI.Testing@24.0.0-beta.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ReactiveUI.Testing&version=24.0.0-beta.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ReactiveUI.Testing&version=24.0.0-beta.1&prerelease
                    
Install 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>

What is ReactiveUI?

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

Documentation

  • RxSchedulers - Using ReactiveUI schedulers without RequiresUnreferencedCode attributes

Book

There has been an excellent book written by our Alumni maintainer Kent Boogart.

NuGet Packages

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

Choosing a distribution: ReactiveUI.Primitives or System.Reactive

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.

Analyzers are opt-in

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" />

Sponsorship

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.

Become a sponsor.

Migration from Xamarin and .NET 8 MAUI

Xamarin Users

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:

  • Xamarin.Forms β†’ Migrate to MAUI and use ReactiveUI.Maui
  • Xamarin.Android β†’ Migrate to MAUI Android or use ReactiveUI.AndroidX for native Android
  • Xamarin.iOS/Mac β†’ Migrate to MAUI iOS/Mac Catalyst

For guidance on migrating from Xamarin to MAUI, see the official migration documentation.

MAUI Users

ReactiveUI supports .NET 9 and .NET 10 for MAUI platforms:

  • net10.0-android / net9.0-android
  • net10.0-ios / net9.0-ios
  • net10.0-maccatalyst / net9.0-maccatalyst
  • net10.0-windows10.0.19041.0 / net9.0-windows10.0.19041.0

Non-MAUI net8.0 library targets remain fully supported.

Examples

Platform-specific sample applications are included in src/examples/:

Sample Platform Description
ReactiveUI.Samples.Wpf WPF Login form with reactive bindings, PasswordBox event marshaling
ReactiveUI.Samples.Winforms WinForms Login form with IViewFor, programmatic UI layout
ReactiveUI.Samples.Maui MAUI Cross-platform login with Shell navigation, ReactiveContentPage
ReactiveUI.Builder.WpfApp WPF Multi-instance chat app with routing, suspension, and network sync
ReactiveUI.Builder.BlazorServer 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:

  • Allow the core team to work on ReactiveUI
  • Thank contributors if they invested a large amount of time in contributing
  • Support projects in the ecosystem

Support

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.

Contribute

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.

Core Team

<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>

Alumni Core Team

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>

.NET Foundation

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 Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed.  net11.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on ReactiveUI.Testing:

Package Downloads
Basyc.ReactiveUi

Package Description

GitHub repositories (9)

Showing the top 9 popular GitHub repositories that depend on ReactiveUI.Testing:

Repository Stars
reactiveui/Akavache
An asynchronous, persistent key-value store created for writing desktop and mobile applications, based on SQLite3. Akavache is great for both storing important data as well as cached local data that expires.
Wouterdek/NodeNetwork
A C# library with a WPF node editor component based on ReactiveUI
reactiveui/ReactiveUI.Samples
This repository contains ReactiveUI samples.
reactiveui/Fusillade
An opinionated HTTP library for Mobile Development
insomniachi/Totoro
A Windows 10/11 only application that is a go to for all things anime.
kentcb/YouIandReactiveUI
The sample code for my book: You, I, and ReactiveUI
reactiveui/ReactiveMvvm
Cross-platform ReactiveUI sample app built for a talk at MSK .NET conf.
reactiveui/Sextant
A ReactiveUI navigation library for Xamarin.Forms
POW-Software/ByteSync
ByteSync is a free and open-source tool for file synchronization, backup, and deduplication. It works locally or remotely, with no VPNs or firewall configuration required. Transfers only file differences, compresses data, encrypts end-to-end, and gives you full control over what and when to sync. Runs on Windows, Linux, and macOS.
Version Downloads Last Updated
24.0.0-beta.1 65 6/26/2026
23.2.28 4,531 6/3/2026
23.1.0-beta.8 92 2/6/2026
23.1.0-beta.1 91 1/21/2026
22.3.1 18,966 11/30/2025
22.2.1 9,402 10/24/2025
22.1.1 10,057 10/11/2025
22.0.1 1,139 10/4/2025
21.0.1 9,585 9/2/2025
20.4.1 34,738 6/29/2025
20.3.1 7,128 6/1/2025
20.2.45 22,730 3/16/2025
20.1.63 86,007 9/21/2024
20.1.52 1,636 9/16/2024
Loading failed