Download Latest Version 24.2.0 source code.zip (5.0 MB) Google Add to Preferred Sources
Home / 24.0.0
Name Modified Size InfoDownloads / Week
Parent folder
ReactiveUI.WinForms.24.0.0.nupkg 2026-07-26 360.8 kB
ReactiveUI.WinForms.Reactive.24.0.0.nupkg 2026-07-26 366.5 kB
ReactiveUI.WinUI.24.0.0.nupkg 2026-07-26 239.7 kB
ReactiveUI.WinUI.Reactive.24.0.0.nupkg 2026-07-26 241.2 kB
ReactiveUI.WPF.24.0.0.nupkg 2026-07-26 517.3 kB
ReactiveUI.WPF.Reactive.24.0.0.nupkg 2026-07-26 522.3 kB
ReactiveUI.Blend.24.0.0.nupkg 2026-07-26 188.2 kB
ReactiveUI.Blend.Reactive.24.0.0.nupkg 2026-07-26 193.1 kB
ReactiveUI.Core.24.0.0.nupkg 2026-07-26 2.6 MB
ReactiveUI.Drawing.24.0.0.nupkg 2026-07-26 368.7 kB
ReactiveUI.Drawing.Reactive.24.0.0.nupkg 2026-07-26 379.2 kB
ReactiveUI.Maui.24.0.0.nupkg 2026-07-26 744.0 kB
ReactiveUI.Maui.Reactive.24.0.0.nupkg 2026-07-26 748.8 kB
ReactiveUI.Reactive.24.0.0.nupkg 2026-07-26 9.1 MB
ReactiveUI.Routing.24.0.0.nupkg 2026-07-26 536.0 kB
ReactiveUI.Routing.Reactive.24.0.0.nupkg 2026-07-26 130.2 kB
ReactiveUI.Testing.24.0.0.nupkg 2026-07-26 131.7 kB
ReactiveUI.Testing.Reactive.24.0.0.nupkg 2026-07-26 139.0 kB
ReactiveUI.24.0.0.nupkg 2026-07-26 9.1 MB
ReactiveUI.AndroidX.24.0.0.nupkg 2026-07-26 117.9 kB
ReactiveUI.AndroidX.Reactive.24.0.0.nupkg 2026-07-26 118.8 kB
ReactiveUI.Blazor.24.0.0.nupkg 2026-07-26 150.5 kB
ReactiveUI.Blazor.Reactive.24.0.0.nupkg 2026-07-26 151.9 kB
24.0.0 source code.tar.gz 2026-07-26 3.5 MB
24.0.0 source code.zip 2026-07-26 5.0 MB
README.md 2026-07-26 9.8 kB
Totals: 26 Items   35.7 MB 0

ReactiveUI 24.0.0

ReactiveUI 24 is a major release. ReactiveUI now runs on the allocation-conscious ReactiveUI.Primitives engine, with System.Reactive becoming optional. This changes public type identities and, for the System.Reactive-compatible distribution, namespaces, so review the migration path before upgrading.

Choose your distribution

Both distributions use the same ReactiveUI.Primitives engine, custom schedulers, and optimized sinks. Choose one package family consistently based on the reactive types you want in your public API.

You want Packages Namespace Public reactive types
The new lighter default ReactiveUI, ReactiveUI.WPF, ReactiveUI.WinForms, ReactiveUI.WinUI, ReactiveUI.Maui, ReactiveUI.Blazor, ReactiveUI.AndroidX, etc. ReactiveUI RxVoid, ISequencer, Signal<T>
ReactiveUI APIs using System.Reactive schedulers ReactiveUI.Reactive, ReactiveUI.WPF.Reactive, ReactiveUI.WinForms.Reactive, ReactiveUI.WinUI.Reactive, ReactiveUI.Maui.Reactive, ReactiveUI.Blazor.Reactive, etc. Primarily ReactiveUI.Reactive and ReactiveUI.Reactive.Builder Unit, IScheduler, Subject<T>

New default: ReactiveUI.Primitives types

Keeping the existing package names selects the new default distribution. The normal ReactiveUI namespaces remain, but these public reactive types change:

  • System.Reactive.Concurrency.IScheduler becomes ReactiveUI.Primitives.Concurrency.ISequencer.
  • System.Reactive.Unit becomes ReactiveUI.Primitives.RxVoid.
  • Subject<T>, BehaviorSubject<T>, and ReplaySubject<T> become Signal<T>, BehaviorSignal<T>, and ReplaySignal<T>.
  • System.Reactive is no longer a transitive dependency. ReactiveUI.Primitives provides Rx-style operators over IObservable<T>, so the default distribution does not require System.Reactive for observable composition. System.Reactive can still coexist with the default packages; choose the .Reactive family when you specifically want ReactiveUI APIs to use System.Reactive's IScheduler compatibility seam (together with Unit and subject interop types).

Use System.Reactive schedulers with ReactiveUI: choose the .Reactive packages

Use the .Reactive packages when you want ReactiveUI itself to accept and expose System.Reactive's IScheduler types. Merely referencing or using System.Reactive elsewhere does not require this distribution. Replace each ReactiveUI package with its matching .Reactive package; for example, use ReactiveUI.Reactive with ReactiveUI.WPF.Reactive instead of ReactiveUI with ReactiveUI.WPF.

The compatibility packages intentionally have distinct type identities. Most ReactiveUI APIs move from ReactiveUI to ReactiveUI.Reactive, builder APIs move to ReactiveUI.Reactive.Builder, and platform XAML/CLR namespace mappings may also need updating. This namespace change is part of why version 24 is a major release.

The .Reactive packages are not the old implementation: they use the same Primitives engine and performance work as the default packages, while exposing System.Reactive 7 types at the interop boundary.

Other changes to know about

  • DynamicData integration moved out of core. Core routing types such as RoutingState, IScreen, and RoutedViewHost remain in the main package. DynamicData-backed routing, change-set, collection, and auto-persist helpers now live in ReactiveUI.Routing, or ReactiveUI.Routing.Reactive for the System.Reactive distribution.
  • Hot MVVM paths are substantially faster. Representative .NET 10 benchmarks showed roughly 3–4× faster WhenAnyValue/ToProperty subscription and emission, with 5–13× less allocation. Both distributions benefit because both run on Primitives.
  • AOT-friendly view activation was added. New IActivatableView.WhenActivated overloads accept an IObservable<object?> ViewModel-change source and avoid reflection and trim warnings.
  • .NET 11 preview targets were added and aligned. MAUI now targets supported .NET 10+ releases; the end-of-life .NET 9 MAUI targets were removed. Existing .NET 9 Windows/WinUI targets remain.
  • Several correctness fixes are included. WhenAnyValue no longer loses a concurrent first change, WPF main-thread scheduling now dispatches correctly from background threads, suspension state is materialized before shutdown persistence, interaction task handlers resume on the captured UI context, and pure ObservableMixins helpers work before builder initialization.
  • Platform fixes are included. WinForms design-mode detection works on .NET Core and for nested controls. The WPF .Reactive package now resolves its XAML namespace and ships the default theme required by ViewModelViewHost.
  • Two internal-looking public sink types were removed. Consumers of ReactiveUI.Internal.SingleValueObservable<T> or SyncExecuteObservable<T> should use the equivalent ReactiveUI.Primitives.Advanced signal types (ReturnSignal<T> and StartSignal<T>).

🗞️ What's Changed

💥 Breaking Changes

  • [6433b0] refactor!: drop duplicate sinks for Primitives 5.7.0 concretes (#4387) @glennawatson

✨ Features

  • [42b4cc] feat: re-platform ReactiveUI onto ReactiveUI.Primitives — leaner, faster, System.Reactive optional (#4382) @glennawatson
  • [2f34b5] feat: add AOT-friendly WhenActivated for IActivatableView (#4413) @glennawatson

♻️ Refactoring

  • [ff88f1] refactor(winui): share routed host setup (#4419) @glennawatson
  • [873e9c] refactor: consolidate duplicated reactive plumbing (#4418) @glennawatson

🐛 Fixes

  • [fed593] fix: WaitForDispatcherScheduler marshals to UI thread from non-UI threads (fixes [#4354]) (#4361) @ChrisPulman @Copilot
  • [c18940] fix: use ObservableMixins helpers before RxAppBuilder initialization (#4410) @glennawatson
  • [5a8211] fix(release): use empty MinVer tag prefix to match unprefixed tags @glennawatson
  • [4a4efc] fix(wpf): resolve XAML namespace under REACTIVE_SHIM in AutoDataTemplateBindingHook (#4404) @deeferentleeg
  • [9f1b73] fix(wpf): ship a default theme in ReactiveUI.WPF.Reactive so ViewModelViewHost renders (#4412) @glennawatson
  • [2eb48f] fix: resume interaction task handlers on the captured context (#4409) @glennawatson
  • [e5dbcf] fix: Winforms design mode detection regressed (#4369) @xackus
  • [d9133b] fix: support .NET Core in winforms activation design mode check (#4358) @xackus
  • [69586a] Fix: WhenAnyValue subscribes to PropertyChanged before reading the initial value (#4381) @dwcullop

⚡ Performance

  • [468060] perf: use custom reactive sinks to improve allocations and performance (#4363) @glennawatson

🧹 General Changes

  • [180a40] build: update package dependencies (#4417) @glennawatson
  • [b37934] ci(security): pin 3rd-party actions to commit SHAs (CodeQL actions/unpinned-tag) @glennawatson
  • [2c6f40] build: allow stable packages with net11 previews @glennawatson
  • [6dc538] chore: enable the expanded StyleSharp analyzer rule set and resolve all violations (#4385) @ChrisPulman @glennawatson
  • [0a1a74] ci(release): grant packages:read so the release workflow can pull the signer image @glennawatson
  • [3823cc] ci(release): add alpha/beta/rc release channel (#4388) @glennawatson
  • [c9e11d] chore(deps): update NuGet dependencies to latest (#4389) @glennawatson
  • [468075] ci(release): migrate signing from SSL.com eSigner to Certum SimplySign @glennawatson
  • [9b9227] chore(deps): bump NuGet dependencies and drop EOL net9 MAUI targets (#4391) @glennawatson
  • [1330c8] chore: Delete MERGE_FOLLOWUPS.md @glennawatson
  • [e6088d] chore(deps): adopt the Sharp analyzer suite, update Primitives, modernize (#4414) @glennawatson
  • [9fd2d8] chore: remove stray .dotnet-home template cache and gitignore it (#4371) @glennawatson
  • [742cb4] ci(release): allow releasing from a historical ref @glennawatson

📦 Dependencies

  • dotnet monorepo: [5aa92c] (10.0.8), [30dcf2] (10.0.9), [2715bb] (10.0.10) @renovate[bot]
  • Microsoft.NET.Test.Sdk: [8fb69d] (18.7.0), [d4c290] (18.8.1) @renovate[bot]
  • Microsoft.SourceLink.GitHub: [1f3550] (10.0.300), [6665a5] (10.0.301) @renovate[bot]
  • [ca7f34] chore(deps): update microsoft.extensions to 10.0.9 (#4378) @renovate[bot]
  • [406807] chore(deps): update dependency stylesharp.analyzers to 3.11.2 (#4384) @renovate[bot]
  • [4908be] chore(deps): update rx.net (system.reactive) to v7 (#4407) @renovate[bot]
  • [fb0c24] chore(deps): update dependency microsoft.windows.cswinrt to 2.3.1 (#4415) @renovate[bot]
  • [0a8fe1] chore(deps): update .net test stack (#4334) @renovate[bot]
  • Microsoft.Testing.Platform.MSBuild: [ce0fbe] (2.2.3), [610220] (2.3.1), [e0eea4] (2.3.2) @renovate[bot]
  • SonarAnalyzer.CSharp: [b50c47] (10.27.0.140913), [fcf16d] (10.29.0.143774) @renovate[bot]
  • [3f0400] chore(deps): update dependency microsoft.windowsappsdk to 2.3.1 (#4406) @renovate[bot]
  • [719f6e] chore(deps): update dependency microsoft.testing.extensions.codecoverage to 18.7.0 (#4362) @renovate[bot]
  • [7033d0] chore(deps): update microsoft.testing (#4395) @renovate[bot]
  • [b90f96] chore(deps): update actions/setup-dotnet action to v6 (#4405) @renovate[bot]
  • Microsoft.Extensions.DependencyModel: [8a7ff3] (10.0.8), [9d9331] (10.0.10) @renovate[bot]

📌 Other

  • [bd27fb] Fix suspension persistence to materialize app state before shutdown save (#4353) @ChrisPulman

🔗 Full Changelog: https://github.com/reactiveui/ReactiveUI/compare/23.2.28...24.0.0

🙌 Contributions

🌱 New contributors since the last release: @deeferentleeg, @dwcullop 💖 Thanks to all the contributors: @ChrisPulman, @deeferentleeg, @dwcullop, @glennawatson, @xackus

🤖 Automated services that contributed: @Copilot, @renovate[bot]

Source: README.md, updated 2026-07-26