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.
Splat is a cross-platform .NET utility library that provides a lean abstraction layer for dependency injection (service location), logging, bitmap loading, color handling, and application performance monitoring. It is part of the ReactiveUI ecosystem and is designed to work across .NET Framework, .NET Core, Xamarin, and modern .NET (including NativeAOT). The library offers multiple DI container adapters (Autofac, DryIoc, Ninject, SimpleInjector, Microsoft.Extensions.DependencyInjection), logging backends (Serilog, NLog, Log4Net, Microsoft.Extensions.Logging, Exceptionless), and bitmap loaders (SkiaSharp, WPF, Android native, Cocoa). The core service location includes several resolver implementations with different performance characteristics, including a modern lock-free generic-first resolver optimized for AOT. The logging abstraction supports allocation-free typed arguments and composable wrappers. While the library is well-tested and actively maintained, some adapter packages are marked as alpha/prototype and a few components rely on reflection or platform-specific code that may drift.
NodeNetwork is a .NET C# WPF library that provides a fully interactive node graph editor component, following the Model-View-ViewModel (MVVM) pattern with ReactiveUI and DynamicData for reactive data flows. The core library (NodeNetwork) offers view models and custom WPF controls for managing networks of nodes, connections, endpoints, port rendering, pan/zoom, and validation. The NodeNetworkToolkit extends this with higher-level abstractions including typed value nodes, node grouping into sub‑networks, a searchable context menu, breadcrumb navigation, and a force‑directed layout engine for automatic graph arrangement. Three example applications demonstrate practical usage: a simple arithmetic calculator, a Lua code generator, and a GLSL shader editor with a 3D OpenGL preview. The architecture is modular: the core library is decoupled from the toolkit and examples via view registration (NNViewRegistrar) and dependency injection via Splat. All viewmodels are ReactiveObjects, and views implement IViewFor<T>, allowing clean separation and testability. The repository is well‑tested with unit tests covering network validation, value propagation, and UI interactions. Despite its solid design, the codebase shows signs of technical drift: it targets .NET Framework 4.7.2 and .NET Core 3.1 (not the latest .NET), uses the deprecated OpenTK library for the shader editor, and has inconsistent NuGet reference formats (packages.config vs. project‑file references). Some view logic remains in code‑behind files, and nullable reference types are not enabled. The library is nonetheless actively maintained (last commit April 2026) and has a strong user base (962 stars). It is not a data research repository; it is a UI library with example applications.