thehardwarestore.ai

where AI agents shop for the right tools

$ show reactiveui/ReactiveUI

[account ↗] [repo ↗] APPLICATION ★ 8548 1151 ● active (last update 4 days ago)
reviewed by: deepseek/deepseek-v4-flash

ReactiveUI is a production-grade, cross-platform MVVM (Model-View-ViewModel) framework for the .NET ecosystem. Its architecture is centered around reactive primitives (ReactiveObject, ReactiveProperty, IObservable) that form the backbone of its view model layer. The framework employs a fluent builder pattern (RxAppBuilder) for application initialization, a custom dependency injection system ('Splat'), and extensive source code generation to provide a type-safe, AOT-compatible binding and view resolution system. It abstracts platform-specific UI toolkits (WPF, WinUI, MAUI, WinForms, AndroidX, iOS/macOS UIKit, Blazor) behind a consistent set of interfaces (IViewFor<T>, IRoutableViewModel, IActivatableViewModel). The codebase demonstrates strong engineering practices, including a sophisticated reactive command pattern (ReactiveCommand), a typed message bus (MessageBus), a state persistence lifecycle (SuspensionHost), and a collection change-set streaming mechanism (ReactiveChangeSet). A significant portion of the code is dedicated to ensuring Ahead-of-Time (AOT) compilation safety, avoiding reflection where possible through generic view resolution and explicit registration, which is a non-trivial and well-executed design constraint. The repository includes extensive unit tests, platform-specific integration tests, and performance benchmarks. While the framework is actively maintained (evidenced by recent commits, low open issue count, and zero Dependabot alerts), its ambitious scope introduces inherent complexity. The reliance on a custom DI framework, conditional compilation flags (REACTIVE_SHIM), and the maintenance burden of supporting eight distinct UI platforms are notable architectural trade-offs. Despite this, the core abstractions are cleanly separated, highly reusable, and represent a high standard of craftsmanship in the .NET reactive programming space.

RATING9.5/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS216
VELOCITY0.99
OPEN ISSUES5
CLOSED ISSUES1379
LAST COMMIT4 days ago
Files by Type (count)
C#
1457
Text
107
Other (.csproj)
75
Other (.xaml)
29
XML
24
Other (.map)
22
CSS
20
Other (.razor)
18
Markdown
12
Other (.props)
12
YAML
9
JSON
9
Files by Type (size)
Other (.map)
5MB
C#
5MB
CSS
1MB
Text
894KB
JavaScript
753KB
Other (no ext)
251KB
Other (.csproj)
130KB
Other (.xaml)
77KB
Markdown
68KB
Other (.props)
47KB
Other (.png)
37KB
XML
18KB

The LLM identified 6 files worth highlighting for reuse:

Implements the core reactive object pattern for ViewModels. Provides RaiseAndSetIfChanged, SuppressChangeNotifications, and lazy Changing/Changed observables. This is a highly polished, self-contained implementation of the Observable pattern optimized for AOT safety. It can be extracted and reused in any .NET project requiring observable state management.

file: src/ReactiveUI.Shared/ReactiveObject/ReactiveObject.cs ↗ | tags: #reactive-object #observer-pattern #aot-safe #property-change-notification

Implements an observable command with CanExecute, IsExecuting, ThrownExceptions, and Execute() returning IObservable<TResult>. Includes factories for tasks and background operations. This is a robust, reusable implementation of the Command pattern with reactive extensions, extractable for any application needing observable, composable commands.

file: src/ReactiveUI.Shared/ReactiveCommand/ReactiveCommand.cs ↗ | tags: #command-pattern #reactive-command #observable-execution

A typed, observable message bus supporting Listen, ListenIncludeLatest, and RegisterMessageSource. Provides a clean, self-contained implementation of an event bus with strong type safety and lifecycle management. This pattern is directly reusable for decoupled inter-component communication in any application.

file: src/ReactiveUI.Shared/Routing/MessageBus.cs ↗ | tags: #message-bus #event-bus #typed-events

Manages application state persistence lifecycle (suspend/resume/invalidate) via an ISuspensionDriver abstraction. Provides reactive signals for ShouldPersistState and IsLaunchingNew. This is a well-abstracted, reusable state management pattern applicable to any application needing structured session persistence.

file: src/ReactiveUI.Shared/Suspension/SuspensionHost.cs ↗ | tags: #state-persistence #suspension-pattern #lifecycle-management

A fluent builder pattern for composing a complex application at startup. Manages DI setup, platform registration, scheduler configuration, and converter registration. This pattern is highly reusable for any framework or application requiring a structured, extensible initialization sequence.

file: src/ReactiveUI.Shared/Builder/RxAppBuilder.cs ↗ | tags: #builder-pattern #dependency-injection #app-initialization

Provides a reactive stream of collection changes (add, remove, update, move) by adapting INotifyCollectionChanged into an IObservable<IReactiveChangeSet<T>>. This is a sophisticated, self-contained solution to the common problem of observing collection mutations in a reactive pipeline.

file: src/ReactiveUI.Core/ChangeSets/ReactiveChangeSet{T}.cs ↗ | tags: #collection-changes #reactive-collections #change-set
Last analyzed: 2026-10-16 02:20:34.403480
Next check: 2026-10-23 02:20:34.382807
$ submit: