ReactiveUI¶
An advanced, composable, functional reactive model-view-viewmodel framework for all .NET platforms.
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
ReactiveCommandruns your async work, surfacesCanExecute, 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.