R3 is a reactive extensions library for C# that succeeds dotnet/reactive and UniRx, supporting platforms including Unity, Godot, Avalonia, WPF, WinForms, WinUI3, Stride, MAUI, MonoGame, Blazor, and Uno.
The tool addresses perceived limitations in existing Rx implementations by rethinking core design decisions. Rather than treating Rx as a universal query paradigm, it focuses on in-memory event processing and messaging. Key departures from dotnet/reactive include removing the IScheduler abstraction to improve performance, allowing errors to flow through pipelines rather than terminating them, adding frame-based operations valuable for game engines, and eliminating synchronous APIs in favor of async/await for single asynchronous operations. The library aligns with modern C# language features and delegates backpressure handling to IAsyncEnumerable and Channels rather than implementing it within the reactive pipeline.
Developers should choose this tool if they work with game engines, real-time applications, or other contexts where frame-based operations and low-allocation performance matter. The README explicitly positions the tool as complementary to other frameworks for distributed processing, such as Orleans, Akka.NET, and gRPC, rather than as a replacement for them.
The project maintains a substantial user base, with nearly all open issues originating from adopters rather than the core team. Maintainers typically respond to new issues and pull requests within a few days.