cysharp/r3

The new future of dotnet/reactive and UniRx.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 1 hour ago
Added to GitGenius on September 17th, 2026
Created on December 7th, 2023
Open Issues & Pull Requests: 27 (+0)
GitHub issues: Enabled
Number of forks: 185
Total Stargazers: 3,996 (+0)
Total Subscribers: 48 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 45.0 hours
Mean response time: 20.6 days
90th percentile: 87.7 days
Tracked items: 91

Most active contributors

Sign in to see contributor activity.

How this project is maintained

100% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Three people close 68% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 20
New in 7 days: 1
Closed in 7 days: 2
Avg open age: 208 days
Stale 30+ days: 13
Stale 90+ days: 8

Recent activity

Opened in 7 days: 1
Closed in 7 days: 2
Comments in 7 days: 0
Events in 7 days: 2

Top labels

  • stale (38)

Detailed Description

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.