Skip to content

ReactiveUI

An advanced, composable, functional reactive model-view-viewmodel framework for all .NET platforms.

Get started Star on GitHub

this.WhenAnyValue(x => x.SearchQuery)
    .Throttle(TimeSpan.FromSeconds(0.8), RxApp.TaskpoolScheduler)
    .Select(query => query?.Trim())
    .DistinctUntilChanged()
    .Where(query => !string.IsNullOrWhiteSpace(query))
    .ObserveOn(RxApp.MainThreadScheduler)
    .InvokeCommand(this, x => x.ExecuteSearch);
this.WhenAnyValue(fun x -> x.SearchQuery)
    .Throttle(TimeSpan.FromSeconds(0.8), RxApp.TaskpoolScheduler)
    .Select(fun query -> query |> Option.ofObj |> Option.map (fun s -> s.Trim()))
    .DistinctUntilChanged()
    .Where(fun query -> not (String.IsNullOrWhiteSpace(query)))
    .ObserveOn(RxApp.MainThreadScheduler)
    .InvokeCommand(this, fun x -> x.ExecuteSearch)
  • Declarative


    Describe what you want, not how to do it. Code is communication between people that also happens to run on a computer; optimising for human readability pays off over a project's lifetime.

  • Composable


    Build re-usable chunks of functionality that slot into your reactive pipelines. Write and test code once, leverage it many times.

  • Cross-platform


    Share business logic between mobile and desktop. First-class support for .NET (WPF, WinForms, WinUI), MAUI, Avalonia, and Uno. Xamarin remains supported for legacy apps.

  • Scalable & Testable


    Built on System.Reactive, ReactiveUI copes gracefully as your application grows. Control time in tests — no more 3-second waits.

  • Reactive Extensions


    Powered by Rx — a proven foundation for expressing the relationship between things that change over time.

  • Async-aware commands


    ReactiveCommand runs your async work, surfaces CanExecute, funnels errors to one handler, and cancels on demand — bind it to a button and forget the plumbing.

  • Less boilerplate


    Decorate fields and methods with [Reactive], [ObservableAsProperty], and [ReactiveCommand]; source generators write the property and command code for you.

  • Open-source community


    Contribute under an OSI-approved licence. Free for commercial use. Maintained by the ReactiveUI Association and Contributors.