Update dependency ReactiveUI.WPF to v25 - #5932
Open
dependencyupdates[bot] wants to merge 1 commit into
Open
dependencyupdates[bot] wants to merge 1 commit into
dependencyupdates[bot] wants to merge 1 commit into
Conversation
dependencyupdates
Bot
force-pushed
the
renovate/reactiveui.wpf-25.x
branch
from
September 28, 2026 15:31
7466b4d to
990f19d
Compare
dependencyupdates
Bot
force-pushed
the
renovate/reactiveui.wpf-25.x
branch
from
September 28, 2026 21:26
990f19d to
3a848d4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
22.3.1→25.1.1Release Notes
reactiveui/reactiveui (ReactiveUI.WPF)
v25.1.1Compare Source
🗞️ What's Changed
🧹 General Changes
9e5e699build(deps): bump ReactiveUI.Binding to 8.8.0 (#4530) @glennawatson📦 Dependencies
0b69014chore(deps): update dependency publicapisharp.analyzers to 2.1.0 (#4463) renovate[bot]🔗 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.0Compare Source
🗞️ What's Changed
🧹 General Changes
6eef2f8build(deps): bump ReactiveUI.Binding to 8.7.0 and ReactiveUI.Primitives to 8.4.0 (#4529) @glennawatson📦 Dependencies
0b69014chore(deps): update dependency publicapisharp.analyzers to 2.1.0 (#4463) renovate[bot]🔗 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.1Compare 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)returnsIObservable<TOutput>, as it did in ReactiveUI 24.Interaction<TInput, TOutput>.WhenHandled(input)returns the question as anIObservable<TOutput>.new Interaction<TInput, TOutput>(handlerScheduler)runs each handler on that scheduler, such asRxSchedulers.MainThreadScheduler.Interaction<TInput, TOutput>.Handle(input)still returnsTask<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
3a1d270build(deps): bump ReactiveUI.Binding to 8.6.0 (#4528) @glennawatson🔗 Full Changelog: reactiveui/ReactiveUI@25.0.0...25.0.1
🙌 Contributions
💖 Thanks to all the contributors: @glennawatson
v25.0.0Compare 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
ReactiveObjectand the usual binding calls keep compiling, but read the breaking changes below before you upgrade.Binding moves to ReactiveUI.Binding
WhenAny*,WhenAnyValue,ObservableForProperty,Bind,OneWayBind,BindTo,BindCommand,InvokeCommand,BindInteraction,ToPropertyandObservableAsPropertyHelper<T>keep their names. They now come from ReactiveUI.Binding, which ReactiveUI brings in for you. Existingusing ReactiveUI;code keeps compiling....Unsafeoverload....Unsafetwin that also asks the service locator.Source generators come with ReactiveUI
[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.[ObservableAsProperty]and[IViewFor]now come from ReactiveUI.Binding.New documentation and examples
src/examples/Documentationhas 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.Known issues
Interaction.HandlereturnsTask<TOutput>instead ofIObservable<TOutput>. This change was not intended.Other changes
ReactiveRecord. The full list is below.dotnet test --device.🗞️ What's Changed
💥 Breaking Changes
37fa90afeat!: run property observation and binding on ReactiveUI.Binding (#4475) @glennawatsonaba5bb2feat!: bring ReactiveUI.SourceGenerators with ReactiveUI.Core (#4516) @glennawatsonb0262cfrefactor(builder)!: remove BuilderMixins members shadowed by IReactiveUIBuilder (#4498) @glennawatson2a59e1dfeat(routing)!: report navigation through plain observables of values (#4497) @glennawatsone267ccafix(winui)!: build the default item template without XAML type lookup (#4496) @glennawatson6def5a6fix!: make every default view host AOT safe on Binding 8.1.0 (#4505) @glennawatson🐛 Fixes
1a39846fix(maui): navigate from an empty RoutedViewHost and follow ViewModelViewHost contract changes (#4493) @glennawatsona579b33fix(android): stop ServiceBound disposing the caller's context (#4514) @glennawatsona4baf2afix: close first-read race in RxState, RxSuspension and RxCacheSize (#4519) @glennawatsonf0074d3fix(android): raise the view model change when it is set through IViewFor (#4513) @glennawatson037a0f2fix(android): return the display rotation from PlatformOperations.GetOrientation (#4495) @glennawatson8eceb3cfix(apple): ignore lifecycle callbacks that arrive after dispose (#4523) @glennawatson76926d8fix(reactiverecord): keep notification state out of derived record ToString and equality (#4482) @glennawatsona9fb343fix(routing): deliver scheduled notifications in order so Navigate returns its view model (#4484) @glennawatson3d470f9fix(android): skip the layout host's own View in opt-out wire-up (#4512) @glennawatson8dcabadfix: honour ViewContract in WinUI ViewModelViewHost and add ReactiveWindowController (#4527) @glennawatsonde754f8fix(suspension): keep the suspension driver and pending load per host (#4483) @glennawatson8ebe4a1fix(wpf): raise TransitionCompleted once per transition (#4485) @glennawatsonedc6355fix(builder): keep the view locator's mappings and leave global state alone on a second build (#4490) @glennawatson🧹 General Changes
c9645bbbuild(deps): bump ReactiveUI.Binding to 8.3.0 (#4520) @glennawatsonb049aa5build(deps): bump TUnit to 1.69.16 (#4500) @glennawatsond86f9e5build(deps): bump ReactiveUI.SourceGenerators to 4.2.0 (#4524) @glennawatsonc6fa7eabuild(deps): bump ReactiveUI.SourceGenerators to 4.0.1 (#4518) @glennawatsonec21edabuild(deps): bump ReactiveUI.SourceGenerators to 4.1.0 (#4521) @glennawatson92d5953build(deps): bump ReactiveUI.Binding to 8.2.0 (#4515) @glennawatson32746d8build(deps): bump ReactiveUI.Binding to 8.4.0 (#4525) @glennawatson1fcd23cchore: Delete .github/CODEOWNERS @glennawatson✅ Tests
dde34a2test: add Android and iOS device tests run through dotnet test --device (#4506) @glennawatsonf3c4b26test: finish each dispatcher-thread test only after its teardown (#4501) @glennawatson21fb115test(wpf): stop the TransitioningContentControl tests waiting on WPF's render loop (#4499) @glennawatson📝 Documentation
66e73a4docs: add runnable documentation examples for the public API (#4503) @glennawatson8ba04dbdocs(readme): add a Sponsors section @glennawatson04209a0docs: examples for the remaining public API, including Apple platforms (#4526) @glennawatsonbbe16fadocs(examples): show default and Unsafe view hosts after #4505 (#4507) @glennawatson🔗 Full Changelog: reactiveui/ReactiveUI@24.3.0...25.0.0
🙌 Contributions
💖 Thanks to all the contributors: @glennawatson
v24.3.0Compare Source
🗞️ What's Changed
🐛 Fixes
c63ed90fix: use the Primitives main-thread sequencers for WPF, WinUI, WinForms and MAUI (#4474) @glennawatson @Pranay-Kumar-022712bd5fix: add net8-11 -windows targets to the WPF, WinForms and Blend packages (#4472) @glennawatson @Pranay-Kumar-029e7839cfix(maui): register the MAUI platform module in WithMaui (#4471) @glennawatson🧹 General Changes
e36aa74ci: pass sourceRef to the shared release workflow @glennawatson2a2a42achore(deps): update NuGet packages to their latest releases (#4470) @glennawatsonebc1778chore: store the assets in git rather than LFS @glennawatsonb91cdebci(lock): run the lock workflow at its own time of day @glennawatson📝 Documentation
3a99baadocs: add security policy @glennawatsona3e8bd5docs: point the code of conduct at the website @glennawatson📦 Dependencies
e53bae8chore(deps): pin github actions digests (#4464) renovate[bot]🔗 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.0Compare Source
🗞️ What's Changed
💥 Breaking Changes
e740afebreaking: satisfy the analyzer gate across every target framework (#4432) @glennawatson61276c3fix(activation)!: let .Reactive blocks use System.Reactive DisposeWith (#4452) @glennawatson♻️ Refactoring
1ff3262refactor: keep one ComponentModelFallbackConverter for all platforms (#4435) @glennawatson🐛 Fixes
feeba90fix(blazor): migrate to ReactiveUI.Primitives.Blazor (#4445) @ChrisPulmand2c79cffix(build): hold the coverage collector at 18.10.0 (#4453) @glennawatson🧹 General Changes
749b862build: adopt PublicApiSharp.Analyzers for public API tracking (#4428) @glennawatson📦 Dependencies
a40188dchore(deps): update dependency roslynator.analyzers to v5 (#4449) renovate[bot]7519172chore(deps): update dependency roslynator.analyzers to 4.16.1 (#4446) renovate[bot]7809fe8chore(deps): update dependency microsoft.sourcelink.github to 10.0.400 (#4440) renovate[bot]e227460chore(deps): update dependency microsoft.net.test.sdk to 18.9.0 (#4443) renovate[bot]efa283cchore(deps): update akavache to v13 (#4431) renovate[bot]9ae1cdfchore(deps): update dependency microsoft.testing.extensions.codecoverage to 18.10.0 (#4441) renovate[bot]74c209echore(deps): update dependency sonaranalyzer.csharp to 10.32.0.713 (#4436) renovate[bot]fb166c2chore(deps): update dependency microsoft.data.sqlite.core to 10.0.11 (#4439) renovate[bot]cb4ae6cchore(deps): update dependency microsoft.bcl.timeprovider to 10.0.11 (#4438) renovate[bot]fb8e0b1chore(deps): update roslyn (microsoft.codeanalysis) to 5.9.0 (#4447) renovate[bot]bc719a2chore(deps): update microsoft.windows (#4442) renovate[bot]6a2ef8achore(deps): update dependency sonaranalyzer.csharp to 10.33.0.1635 (#4448) renovate[bot]f085a55chore(deps): update dependency roslynator.analyzers to 4.16.0 (#4433) renovate[bot]🔗 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.0Compare Source
🗞️ What's Changed
🐛 Fixes
07989b5fix: broken links (#4422) @ptasznikarium27ddca2fix(testing): restore .NET Framework targets for the testing packages (#4427) @glennawatson🧹 General Changes
27b0e3cchore(renovate): group related dependency cohorts (#4423) @glennawatsonad4b00cbuild: update nuget package dependencies (#4426) @glennawatson🔗 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.0Compare Source
ReactiveUI 24.0.0
ReactiveUI 24 is a major release. ReactiveUI now runs on the allocation-conscious
ReactiveUI.Primitivesengine, 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.
ReactiveUI,ReactiveUI.WPF,ReactiveUI.WinForms,ReactiveUI.WinUI,ReactiveUI.Maui,ReactiveUI.Blazor,ReactiveUI.AndroidX, etc.ReactiveUIRxVoid,ISequencer,Signal<T>ReactiveUI.Reactive,ReactiveUI.WPF.Reactive,ReactiveUI.WinForms.Reactive,ReactiveUI.WinUI.Reactive,ReactiveUI.Maui.Reactive,ReactiveUI.Blazor.Reactive, etc.ReactiveUI.ReactiveandReactiveUI.Reactive.BuilderUnit,IScheduler,Subject<T>New default: ReactiveUI.Primitives types
Keeping the existing package names selects the new default distribution. The normal
ReactiveUInamespaces remain, but these public reactive types change:System.Reactive.Concurrency.ISchedulerbecomesReactiveUI.Primitives.Concurrency.ISequencer.System.Reactive.UnitbecomesReactiveUI.Primitives.RxVoid.Subject<T>,BehaviorSubject<T>, andReplaySubject<T>becomeSignal<T>,BehaviorSignal<T>, andReplaySignal<T>.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.Reactivefamily when you specifically want ReactiveUI APIs to use System.Reactive'sISchedulercompatibility seam (together withUnitand subject interop types).Use System.Reactive schedulers with ReactiveUI: choose the
.ReactivepackagesUse the
.Reactivepackages when you want ReactiveUI itself to accept and expose System.Reactive'sISchedulertypes. Merely referencing or using System.Reactive elsewhere does not require this distribution. Replace each ReactiveUI package with its matching.Reactivepackage; for example, useReactiveUI.ReactivewithReactiveUI.WPF.Reactiveinstead ofReactiveUIwithReactiveUI.WPF.The compatibility packages intentionally have distinct type identities. Most ReactiveUI APIs move from
ReactiveUItoReactiveUI.Reactive, builder APIs move toReactiveUI.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
.Reactivepackages 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
RoutingState,IScreen, andRoutedViewHostremain in the main package. DynamicData-backed routing, change-set, collection, and auto-persist helpers now live inReactiveUI.Routing, orReactiveUI.Routing.Reactivefor the System.Reactive distribution.WhenAnyValue/ToPropertysubscription and emission, with 5–13× less allocation. Both distributions benefit because both run on Primitives.IActivatableView.WhenActivatedoverloads accept anIObservable<object?>ViewModel-change source and avoid reflection and trim warnings.WhenAnyValueno 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 pureObservableMixinshelpers work before builder initialization..Reactivepackage now resolves its XAML namespace and ships the default theme required byViewModelViewHost.ReactiveUI.Internal.SingleValueObservable<T>orSyncExecuteObservable<T>should use the equivalentReactiveUI.Primitives.Advancedsignal types (ReturnSignal<T>andStartSignal<T>).🗞️ What's Changed
💥 Breaking Changes
6433b00refactor!: drop duplicate sinks for Primitives 5.7.0 concretes (#4387) @glennawatson✨ Features
42b4ccefeat: re-platform ReactiveUI onto ReactiveUI.Primitives — leaner, faster, System.Reactive optional (#4382) @glennawatson2f34b56feat: add AOT-friendly WhenActivated for IActivatableView (#4413) @glennawatson♻️ Refactoring
ff88f13refactor(winui): share routed host setup (#4419) @glennawatson873e9c3refactor: consolidate duplicated reactive plumbing (#4418) @glennawatson🐛 Fixes
fed5931fix: WaitForDispatcherScheduler marshals to UI thread from non-UI threads (fixes #4354) (#4361) @ChrisPulman @Copilotc18940efix: use ObservableMixins helpers before RxAppBuilder initialization (#4410) @glennawatson5a82114fix(release): use empty MinVer tag prefix to match unprefixed tags @glennawatson4a4efcffix(wpf): resolve XAML namespace under REACTIVE_SHIM in AutoDataTemplateBindingHook (#4404) @deeferentleeg9f1b734fix(wpf): ship a default theme in ReactiveUI.WPF.Reactive so ViewModelViewHost renders (#4412) @glennawatson2eb48f2fix: resume interaction task handlers on the captured context (#4409) @glennawatsone5dbcfefix: Winforms design mode detection regressed (#4369) @xackusd9133b6fix: support .NET Core in winforms activation design mode check (#4358) @xackus69586a4Fix: WhenAnyValue subscribes to PropertyChanged before reading the initial value (#4381) @dwcullop⚡ Performance
4680609perf: use custom reactive sinks to improve allocations and performance (#4363) @glennawatson🧹 General Changes
180a40bbuild: update package dependencies (#4417) @glennawatsonb37934cci(security): pin 3rd-party actions to commit SHAs (CodeQL actions/unpinned-tag) @glennawatson2c6f400build: allow stable packages with net11 previews @glennawatson6dc538echore: enable the expanded StyleSharp analyzer rule set and resolve all violations (#4385) @ChrisPulman @glennawatson0a1a74eci(release): grant packages:read so the release workflow can pull the signer image @glennawatson3823cc3ci(release): add alpha/beta/rc release channel (#4388) @glennawatsonc9e11d4chore(deps): update NuGet dependencies to latest (#4389) @glennawatson4680756ci(release): migrate signing from SSL.com eSigner to Certum SimplySign @glennawatson9b92273chore(deps): bump NuGet dependencies and drop EOL net9 MAUI targets (#4391) @glennawatson1330c80chore: Delete MERGE_FOLLOWUPS.md @glennawatsone6088d3chore(deps): adopt the Sharp analyzer suite, update Primitives, modernize (#4414) @glennawatson9fd2d8cchore: remove stray .dotnet-home template cache and gitignore it (#4371) @glennawatson742cb4eci(release): allow releasing from a historical ref @glennawatson📦 Dependencies
5aa92cc(10.0.8), reactiveui/ReactiveUI@30dcf2f(10.0.9), reactiveui/ReactiveUI@2715bb2(10.0.10) @renovate[bot]8fb69dc(18.7.0), reactiveui/ReactiveUI@d4c290b(18.8.1) @renovate[bot]1f35503(10.0.300), reactiveui/ReactiveUI@6665a55(10.0.301) @renovate[bot]ca7f343chore(deps): update microsoft.extensions to 10.0.9 (#4378) @renovate[bot]4068079chore(deps): update dependency stylesharp.analyzers to 3.11.2 (#4384) @renovate[bot]4908bebchore(deps): update rx.net (system.reactive) to v7 (#4407) @renovate[bot]fb0c249chore(deps): update dependency microsoft.windows.cswinrt to 2.3.1 (#4415) @renovate[bot]0a8fe1dchore(deps): update .net test stack (#4334) @renovate[bot]ce0fbeb(2.2.3), reactiveui/ReactiveUI@6102207(2.3.1), reactiveui/ReactiveUI@e0eea47(2.3.2) @renovate[bot]b50c47a(10.27.0.140913), reactiveui/ReactiveUI@fcf16d8(10.29.0.143774) @renovate[bot]3f04004chore(deps): update dependency microsoft.windowsappsdk to 2.3.1 (#4406) @renovate[bot]719f6e6chore(deps): update dependency microsoft.testing.extensions.codecoverage to 18.7.0 (#4362) @renovate[bot]7033d0cchore(deps): update microsoft.testing (#4395) @renovate[bot]b90f96cchore(deps): update actions/setup-dotnet action to v6 (#4405) @renovate[bot]8a7ff35(10.0.8), reactiveui/ReactiveUI@9d9331d(10.0.10) @renovate[bot]📌 Other
bd27fbcFix suspension persistence to materialize app state before shutdown save (#4353) @ChrisPulman🔗 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.28Compare 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, and23.2.27, which were signed with a code-signing certificate that has since been revoked — NuGet restore fails on them withNU3012.23.2.28is identical in code to23.2.27but re-signed with a valid certificate, and it depends on the re-signed Splat19.4.1. Those superseded releases have been removed and their notes consolidated here.🗞️ What's Changed
🐛 Fixes
DependencyPropertylookup (#4350, fixes #3921)BindCommandpassing the wrong parameter after a new ViewModel is assigned to the View (#4324)Configuration
📅 Schedule: (UTC)
🚦 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.
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