Skip to content

Update dependency ReactiveUI.WPF to v25 - #5932

Open
dependencyupdates[bot] wants to merge 1 commit into
masterfrom
renovate/reactiveui.wpf-25.x
Open

dependencyupdates[bot] wants to merge 1 commit into
masterfrom
renovate/reactiveui.wpf-25.x

Conversation

@dependencyupdates

@dependencyupdates dependencyupdates Bot commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
ReactiveUI.WPF (source) 22.3.1 → 25.1.1 age adoption passing confidence

Release Notes

reactiveui/reactiveui (ReactiveUI.WPF)

v25.1.1

Compare Source

🗞️ What's Changed

🧹 General Changes
📦 Dependencies

🔗 Full Changelog: reactiveui/ReactiveUI@25.1.0...25.1.1

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

🤖 Automated services that contributed: renovate[bot]

v25.1.0

Compare Source

🗞️ What's Changed

🧹 General Changes
📦 Dependencies

🔗 Full Changelog: reactiveui/ReactiveUI@25.0.1...25.1.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

🤖 Automated services that contributed: renovate[bot]

v25.0.1

Compare Source

Summary

ReactiveUI 25.0.1 adds back the ability to ask an interaction as an observable through IInteraction<TInput, TOutput>. ReactiveUI 25.0.0 removed it by accident.

  • IInteraction<TInput, TOutput>.Handle(input) returns IObservable<TOutput>, as it did in ReactiveUI 24.
  • Interaction<TInput, TOutput>.WhenHandled(input) returns the question as an IObservable<TOutput>.
  • new Interaction<TInput, TOutput>(handlerScheduler) runs each handler on that scheduler, such as RxSchedulers.MainThreadScheduler.
  • Interaction<TInput, TOutput>.Handle(input) still returns Task<TOutput>, so code written against 25.0.0 keeps compiling.

The change comes from ReactiveUI.Binding 8.6.0. The migration guide shows how to use each call.

🗞️ What's Changed

🧹 General Changes

🔗 Full Changelog: reactiveui/ReactiveUI@25.0.0...25.0.1

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

v25.0.0

Compare Source

Summary

ReactiveUI 25.0.0 is a major version. Binding moves to a source-generator-first library, the ReactiveUI source generators now come with every install, and the documentation has been rebuilt. Most apps that use ReactiveObject and the usual binding calls keep compiling, but read the breaking changes below before you upgrade.

Binding moves to ReactiveUI.Binding
  • Property observation and binding now run on ReactiveUI.Binding. It generates the code at build time, so it works with trimming and NativeAOT.
  • WhenAny*, WhenAnyValue, ObservableForProperty, Bind, OneWayBind, BindTo, BindCommand, InvokeCommand, BindInteraction, ToProperty and ObservableAsPropertyHelper<T> keep their names. They now come from ReactiveUI.Binding, which ReactiveUI brings in for you. Existing using ReactiveUI; code keeps compiling.
  • If the generator cannot read a property path, use the matching ...Unsafe overload.
  • ReactiveUI's old reflection-based observation and binding engine is removed. That is about 190,000 fewer lines, and far fewer trimming warnings.
  • View location, view hosts, templates, routing, activation and validation presentation stay in ReactiveUI.
  • The default view hosts on WPF, WinForms, WinUI, MAUI, Apple and Android find views without reflection and are AOT safe. Each has an ...Unsafe twin that also asks the service locator.
  • Routing reports navigation through plain observables of values.
  • The migration guide lists the removed types, the behaviour changes and what to change in your code.
Source generators come with ReactiveUI
  • ReactiveUI.Core now brings ReactiveUI.SourceGenerators. Both ReactiveUI and ReactiveUI.Reactive depend on Core, so every project gets the generators with no extra package.
  • [Reactive], [ReactiveCommand], [ReactiveCollection], [BindableDerivedList] and [IReactiveObject] generate your view model properties and commands at build time. This is now the recommended way to write view models.
  • If your project references an older ReactiveUI.SourceGenerators package directly, restore fails with NU1605. Remove that reference, or move it to 4.0.0 or later.
  • [ObservableAsProperty] and [IViewFor] now come from ReactiveUI.Binding.
New documentation and examples
  • The documentation website at https://reactiveui.net/documentation/reactiveui and its related pages have been rewritten.
  • src/examples/Documentation has a runnable example for every public class and method, one project per website page. The website quotes these examples, and each one checks its printed output, so the docs stay in step with the code.
  • Platform examples cover WPF, WinForms, WinUI, MAUI, Blazor, Android and Apple.
  • These examples replace the old reactiveui/ReactiveUI.Samples repository, which is now archived.
Known issues
  • Interaction.Handle returns Task<TOutput> instead of IObservable<TOutput>. This change was not intended.
Other changes
  • Many bug fixes across Android, Apple, MAUI, WPF, WinUI, routing, suspension, the app builder and ReactiveRecord. The full list is below.
  • Android and iOS device tests now run through dotnet test --device.

🗞️ What's Changed

💥 Breaking Changes
🐛 Fixes
🧹 General Changes
✅ Tests
📝 Documentation

🔗 Full Changelog: reactiveui/ReactiveUI@24.3.0...25.0.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

v24.3.0

Compare Source

🗞️ What's Changed

🐛 Fixes
🧹 General Changes
📝 Documentation
📦 Dependencies

🔗 Full Changelog: reactiveui/ReactiveUI@24.2.0...24.3.0

🙌 Contributions

🌱 New contributors since the last release: @​Pranay-Kumar-02
💖 Thanks to all the contributors: @​glennawatson, @​Pranay-Kumar-02

🤖 Automated services that contributed: renovate[bot]

v24.2.0

Compare Source

🗞️ What's Changed

💥 Breaking Changes
♻️ Refactoring
🐛 Fixes
🧹 General Changes
📦 Dependencies

🔗 Full Changelog: reactiveui/ReactiveUI@24.1.0...24.2.0

🙌 Contributions

💖 Thanks to all the contributors: @​ChrisPulman, @​glennawatson

🤖 Automated services that contributed: renovate[bot]

v24.1.0

Compare Source

🗞️ What's Changed

🐛 Fixes
🧹 General Changes

🔗 Full Changelog: reactiveui/ReactiveUI@24.0.0...24.1.0

🙌 Contributions

🌱 New contributors since the last release: @​ptasznikarium
💖 Thanks to all the contributors: @​glennawatson, @​ptasznikarium

v24.0.0

Compare Source

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
✨ Features
♻️ Refactoring
🐛 Fixes
⚡ Performance
🧹 General Changes
📦 Dependencies
📌 Other

🔗 Full Changelog: reactiveui/ReactiveUI@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]

v23.2.28

Compare Source

🔏 23.2.28 — consolidated, re-signed release

This is the recommended 23.x release. It supersedes and folds together 23.1.1, 23.1.8, 23.2.1, 23.2.19, and 23.2.27, which were signed with a code-signing certificate that has since been revoked — NuGet restore fails on them with NU3012. 23.2.28 is identical in code to 23.2.27 but re-signed with a valid certificate, and it depends on the re-signed Splat 19.4.1. Those superseded releases have been removed and their notes consolidated here.

🗞️ What's Changed

🐛 Fixes
  • Interaction async-handler scheduling (#​4351, fixes #​4280)
  • Support inherited DependencyProperty lookup (#​4350, fixes #​3921)
  • Handle null load state in activation (#​4349, fixes #​4331)
  • WinForms designer serialization errors (#​4339)
  • BindCommand passing the wrong parameter after a new ViewModel is assigned to the View (#​4324)
  • WPF design-time activation and m

❗ Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Commands to ignore dependencies

You can trigger dependency actions by commenting on this PR:

  • @particularbot ignore this major version
  • @particularbot ignore this minor version
  • @particularbot ignore this dependency

@dependencyupdates dependencyupdates Bot added dependencies Pull requests that update a dependency file NuGet labels Sep 27, 2026
@dependencyupdates
dependencyupdates Bot force-pushed the renovate/reactiveui.wpf-25.x branch from 7466b4d to 990f19d Compare September 28, 2026 15:31
@dependencyupdates
dependencyupdates Bot force-pushed the renovate/reactiveui.wpf-25.x branch from 990f19d to 3a848d4 Compare September 28, 2026 21:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file NuGet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants