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…




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](docs/RxSchedulers.md) - 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. Note: 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 Installation docs page for more info.
| Platform | ReactiveUI Package | NuGet |
|---------------|--------------------------------------|------------------------------|
| .NET Standard | [ReactiveUI][CoreDoc] | [![CoreBadge]][Core] |
| Any | [ReactiveUI.SourceGenerators][SGDoc] | [![SGBadge]][SG] |
| Unit Testing | [ReactiveUI.Testing][TestDoc] | [![TestBadge]][Test] |
| WPF | [ReactiveUI.WPF][WpfDoc] | [![WpfBadge]][Wpf] |
| WinUI | [ReactiveUI.WinUI][WinUiDoc] | [![WinUiBadge]][WinUi] |
| MAUI | [ReactiveUI.Maui][MauiDoc] | [![MauiBadge]][Maui] |
| Windows Forms | [ReactiveUI.WinForms][WinDoc] | [![WinBadge]][Win] |
| AndroidX | [ReactiveUI.AndroidX][DroDoc] | [![DroXBadge]][DroX] |
| Blazor | [ReactiveUI.Blazor][BlazDoc] | [![BlazBadge]][Blaz] |
| Platform Uno | [ReactiveUI.Uno][UnoDoc] | [![UnoBadge]][Uno] |
| Platform Uno | [ReactiveUI.Uno.WinUI][UnoWinUiDoc] | [![UnoWinUiBadge]][UnoWinUi] |
| Avalonia | [ReactiveUI.Avalonia][AvaDoc] | [![AvaBadge]][Ava] |
| Any | [ReactiveUI.Validation][ValDocs] | [![ValBadge]][ValCore] |
| Any | [ReactiveUI.Extensions][ExtDocs] | [![ExtBadge]][Ext] |
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 |
| 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) 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/BehaviorSubject → Signal/BehaviorSignal. To upgrade
with zero source changes, reference the matching *.Reactive packages instead — they keep IScheduler, Unit
and Subject.
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.
[Core]: https://www.nuget.org/packages/ReactiveUI/
[CoreBadge]: https://img.shields.io/nuget/v/ReactiveUI.svg
[CoreDoc]: https://reactiveui.net/docs/getting-started/installation/
[SG]: https://www.nuget.org/packages/ReactiveUI.SourceGenerators/
[SGDoc]: https://reactiveui.net/docs/handbook/view-models/boilerplate-code
[SGBadge]: https://img.shields.io/nuget/v/ReactiveUI.SourceGenerators.svg
[Test]: https://www.nuget.org/packages/ReactiveUI.Testing/
[TestBadge]: https://img.shields.io/nuget/v/ReactiveUI.Testing.svg
[TestDoc]: https://reactiveui.net/docs/handbook/testing/
[Wpf]: https://www.nuget.org/packages/ReactiveUI.WPF/
[WpfBadge]: https://img.shields.io/nuget/v/ReactiveUI.WPF.svg
[WpfDoc]: https://reactiveui.net/docs/getting-started/installation/windows-presentation-foundation
[WinUi]: https://www.nuget.org/packages/ReactiveUI.WinUI/
[WinUiBadge]: https://img.shields.io/nuget/v/ReactiveUI.WinUI.svg
[WinUiDoc]: https://reactiveui.net/docs/getting-started/installation/universal-windows-platform
[Maui]: https://www.nuget.org/packages/ReactiveUI.Maui/
[MauiBadge]: https://img.shields.io/nuget/v/ReactiveUI.Maui.svg
[Win]: https://www.nuget.org/packages/ReactiveUI.WinForms/
[WinEvents]: https://www.nuget.org/packages/ReactiveUI.Events.WinForms/
[WinBadge]: https://img.shields.io/nuget/v/ReactiveUI.WinForms.svg
[WinDoc]: https://reactiveui.net/docs/getting-started/installation/windows-forms
[DroX]: https://www.nuget.org/packages/ReactiveUI.AndroidX/
[DroXBadge]: https://img.shields.io/nuget/v/ReactiveUI.AndroidX.svg
[DroDoc]: https://reactiveui.net/docs/getting-started/installation/
[Uno]: https://www.nuget.org/packages/ReactiveUI.Uno/
[UnoBadge]: https://img.shields.io/nuget/v/ReactiveUI.Uno.svg
[UnoDoc]: https://reactiveui.net/docs/getting-started/installation/uno-platform
[UnoWinUi]: https://www.nuget.org/packages/ReactiveUI.Uno.WinUI/
[UnoWinUiBadge]: https://img.shields.io/nuget/v/ReactiveUI.Uno.WinUI.svg
[UnoWinUiDoc]: https://reactiveui.net/docs/getting-started/installation/uno-platform
[Blaz]: https://www.nuget.org/packages/ReactiveUI.Blazor/
[BlazBadge]: https://img.shields.io/nuget/v/ReactiveUI.Blazor.svg
[BlazDoc]: https://www.reactiveui.net/docs/getting-started/installation/blazor
[Ava]: https://www.nuget.org/packages/ReactiveUI.Avalonia/
[AvaBadge]: https://img.shields.io/nuget/v/ReactiveUI.Avalonia.svg
[AvaDoc]: https://reactiveui.net/docs/getting-started/installation/avalonia
[EventsDocs]: https://reactiveui.net/docs/handbook/events/
[ValCore]: https://www.nuget.org/packages/ReactiveUI.Validation/
[ValBadge]: https://img.shields.io/nuget/v/ReactiveUI.Validation.svg
[ValDocs]: https://reactiveui.net/docs/handbook/user-input-validation/
[Ext]: https://www.nuget.org/packages/ReactiveUI.Extensions/
[ExtBadge]: https://img.shields.io/nuget/v/ReactiveUI.Extensions.svg
[ExtDocs]: https://reactiveui.net/
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.
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.AndroidXfor native Android - Xamarin.iOS/Mac → Migrate to MAUI iOS/Mac Catalyst
MAUI Users
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.0
net8.0 library targets remain fully supported.
Examples
Platform-specific sample applications are included in [src/examples/](src/examples/):
| Sample | Platform | Description |
|---------------------------------------------------------------------------------|---------------|--------------------------------------------------------------------|
| [ReactiveUI.Samples.Wpf](src/examples/ReactiveUI.Samples.Wpf) | WPF | Login form with reactive bindings, PasswordBox event marshaling |
| [ReactiveUI.Samples.Winforms](src/examples/ReactiveUI.Samples.Winforms) | WinForms | Login form with IViewFor, programmatic UI layout |
| [ReactiveUI.Samples.Maui](src/examples/ReactiveUI.Samples.Maui) | MAUI | Cross-platform login with Shell navigation, ReactiveContentPage |
| [ReactiveUI.Builder.WpfApp](src/examples/ReactiveUI.Builder.WpfApp) | WPF | Multi-instance chat app with routing, suspension, and network sync |
| [ReactiveUI.Builder.BlazorServer](src/examples/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
Glenn Watson
Melbourne, Australia
Chris Pulman
United Kingdom
Rodney Littles II
Texas, USA
Colt Bauman
South Korea
Alumni Core Team
The following have been core team members in the past.
Geoffrey Huntley
Sydney, Australia
Kent Boogaart
Brisbane, Australia
Olly Levett
London, United Kingdom
Anaïs Betts
San Francisco, USA
Brendan Forster
Melbourne, Australia
Claire Novotny
New York, USA
<img w
…
-
refit
The automatic type-safe REST library for .NET Core, Xamarin and .NET. Heavily inspired by Square's Retrofit library, Refit turns your REST API into a live interface.
C# ★ 9.5k 7h agoExplain → -
ReactiveUI
An advanced, composable, functional reactive model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming. ReactiveUI allows you to abstract mutable state away from your user interfaces, express the idea around a feature in one readable place and improve the testability of your application.
C# ★ 8.5k 1d agoExplain → -
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.
C# ★ 2.5k 6d agoExplain → -
splat
Makes things cross-platform
C# ★ 995 8h agoExplain → -
Camelotia
Cross-platform sample .NET GUI for cloud file management.
C# ★ 612 9d agoExplain → -
ReactiveUI.Samples
This repository contains ReactiveUI samples.
C# ★ 362 7d agoExplain → -
Fusillade
An opinionated HTTP library for Mobile Development
C# ★ 314 2d agoExplain → -
ReactiveUI.Validation
Validation helpers for ReactiveUI-based apps.
C# ★ 272 2d agoExplain → -
punchclock
Make sure your asynchronous operations show up to work on time
C# ★ 263 8h agoExplain → -
Pharmacist ▣
Builds observables from events.
C# ★ 244 4mo agoExplain → -
ReactiveMvvm
Cross-platform ReactiveUI sample app built for a talk at MSK .NET conf.
C# ★ 187 11h agoExplain → -
Sextant
A ReactiveUI navigation library for Xamarin.Forms
C# ★ 161 7d agoExplain → -
ReactiveUI.SourceGenerators
Use source generators to generate objects.
C# ★ 69 2d agoExplain → -
Splat.DI.SourceGenerator
No description.
C# ★ 37 2d agoExplain → -
website
ReactiveUI documentation and guidelines website. PR's welcome! 💖
C# ★ 36 15h agoExplain → -
ReactiveUI.Avalonia
Avalonia related components for the ReactiveUI family
C# ★ 24 2d agoExplain → -
Reactive.Wasm
A Web Assembly versions of the System.Reactive classes.
C# ★ 17 7d agoExplain → -
Extensions
A focused collection of high–value Reactive Extensions (Rx) operators that do not ship with System.Reactive but are commonly needed when building reactive .NET applications.
C# ★ 10 1d agoExplain → -
Maui.Plugins.Popup
ReactiveUI support for Maui Popups
C# ★ 9 2d agoExplain → -
Primitives
A compact, high-performance reactive library for .NET applications
C# ★ 6 3h agoExplain → -
ReactiveUI.Binding.SourceGenerators
The source generation binding engine for ReactiveUI
C# ★ 6 2d agoExplain → -
rfcs
RFCs for changes to ReactiveUI
Shell ★ 5 7y agoExplain → -
styleguide
design / marketing style guide for ReactiveUI
HTML ★ 4 8d agoExplain → -
.github
No description.
★ 3 7d agoExplain → -
actions-common
Common GitHub actions for the ReactiveUI project
Dockerfile ★ 2 15h agoExplain → -
ReactiveUI.Uno
No description.
C# ★ 1 2d agoExplain →
No repos match these filters.