explaingit

reactiveui/reactiveui

8,485C#Audience · developerComplexity · 3/5Setup · moderate

TLDR

ReactiveUI is a C# framework for building .NET apps where the UI automatically updates when data changes, using a reactive style that replaces manual event wiring across WPF, MAUI, Blazor, Avalonia, and other platforms.

Mindmap

mindmap
  root((reactiveui))
    Pattern
      MVVM
      Reactive programming
      Observable data flow
    Platforms
      WPF desktop
      NET MAUI mobile
      Blazor browser
      Avalonia cross-platform
    Install
      Core NuGet package
      Platform package
    Resources
      reactiveui.net docs
      You I and ReactiveUI book
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a WPF desktop app where UI labels and buttons automatically react to ViewModel property changes without manual event handlers

USE CASE 2

Create a cross-platform mobile and desktop app with .NET MAUI using reactive data bindings

USE CASE 3

Migrate a Xamarin app to .NET MAUI using ReactiveUI migration guidance

Tech stack

C#.NETNuGetWPFMAUIBlazorAvalonia

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires installing both the core ReactiveUI NuGet package and a platform-specific package matching your app type such as WPF, MAUI, or Blazor.

In plain English

ReactiveUI is a framework for building desktop, mobile, and web applications in C# and other .NET languages. It is built around a pattern called Model-View-ViewModel, or MVVM, which is a structured way of separating the logic of an application from its visual interface. ReactiveUI adds a layer on top of this by applying ideas from functional reactive programming, a style of writing code where you describe how data flows and changes over time rather than manually updating values whenever something happens. In practical terms, this means that instead of writing code like "when the user clicks the button, update this label," you describe a continuous relationship: "this label always shows the result of this calculation, and when any input changes, the label updates automatically." The framework handles the plumbing of connecting those pieces and notifying the interface when something needs to change. The README describes the goal as moving unpredictable, mutable state out of your user interface and into a place where it can be reasoned about and tested more easily. ReactiveUI works across a wide range of .NET platforms. Separate packages are available for WPF (Windows desktop), Windows Forms, WinUI, MAUI (cross-platform mobile and desktop), Android, Blazor (browser), Avalonia, and the Uno Platform. You install a core package plus whichever platform-specific package matches your project. Note that support for the older Xamarin platform has been removed as of mid-2024, and the README includes migration guidance for Xamarin users moving to MAUI. The project is open source and community-maintained. A full documentation website lives at reactiveui.net, covering installation, testing patterns, handling user input validation, and working with observable events. A book called You, I, and ReactiveUI written by a former maintainer covers the framework in depth. The project is installed via NuGet, the standard package manager for .NET, and is actively used in production applications across all the supported platforms.

Copy-paste prompts

Prompt 1
Show me how to create a ReactiveUI ViewModel in C# where a search results list automatically updates when the search text property changes
Prompt 2
How do I set up ReactiveUI in a .NET MAUI project and bind a button's IsEnabled property to a ViewModel boolean reactively?
Prompt 3
Write a ReactiveUI command in C# that validates a form field asynchronously and disables a submit button while the input is invalid
Prompt 4
How do I write unit tests for a ReactiveUI ViewModel that uses reactive commands and observable properties?
Open on GitHub → Explain another repo

← reactiveui on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.