chore(deps): update reactiveui to v24#466
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
ChrisPulman
approved these changes
Jul 26, 2026
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:
23.2.28→24.0.023.2.28→24.0.0Release Notes
reactiveui/reactiveui (ReactiveUI)
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]
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 these updates again.
This PR was generated by Mend Renovate. View the repository job log.