From 9c23c9afa05d74a9b2d94fdd493d89916763f7ea Mon Sep 17 00:00:00 2001 From: Kazuki Ota <117221407+kaota_microsoft@users.noreply.github.com> Date: Fri, 14 Aug 2026 14:40:16 +0900 Subject: [PATCH] Update System.Reactive to v7 Upgrade the centrally managed Rx.NET runtime and testing packages to 7.0.0, remove the obsolete platform-services import, and document the migration decision. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0797452b-b81d-48c7-9bbc-0420834bb970 --- Directory.Packages.props | 4 +- .../ReadOnlyReactiveProperty.cs | 1 - .../adr/0006-upgrade-system-reactive-v7.md | 37 +++++++++++++++++++ dev-docs/adr/README.md | 1 + 4 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 dev-docs/adr/0006-upgrade-system-reactive-v7.md diff --git a/Directory.Packages.props b/Directory.Packages.props index b6f3b0bc..cf5da0ce 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -7,7 +7,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/Source/ReactiveProperty.NETStandard/ReadOnlyReactiveProperty.cs b/Source/ReactiveProperty.NETStandard/ReadOnlyReactiveProperty.cs index f145ee86..ba27793b 100644 --- a/Source/ReactiveProperty.NETStandard/ReadOnlyReactiveProperty.cs +++ b/Source/ReactiveProperty.NETStandard/ReadOnlyReactiveProperty.cs @@ -3,7 +3,6 @@ using System.ComponentModel; using System.Reactive.Concurrency; using System.Reactive.Disposables; -using System.Reactive.PlatformServices; using System.Runtime.ExceptionServices; using Reactive.Bindings.Internals; diff --git a/dev-docs/adr/0006-upgrade-system-reactive-v7.md b/dev-docs/adr/0006-upgrade-system-reactive-v7.md new file mode 100644 index 00000000..f0883479 --- /dev/null +++ b/dev-docs/adr/0006-upgrade-system-reactive-v7.md @@ -0,0 +1,37 @@ +# 0006. Upgrade the System.Reactive dependency to v7 + +- **Status:** Accepted +- **Date:** 2026-08-14 +- **Deciders:** ReactiveProperty maintainers + +## Context + +ReactiveProperty currently depends on System.Reactive 6.1.0 and Microsoft.Reactive.Testing +6.1.0. Rx.NET v7 is a major release that removes UI-framework-specific reference assemblies +from the core package, moves those integrations to platform-specific packages, and drops +out-of-support .NET 6 and .NET 7 targets. ReactiveProperty's supported targets are +netstandard2.0, net472, net8.0, net9.0, and net10.0, and its WPF scheduler uses the common +`IScheduler` and `SynchronizationContextScheduler` APIs rather than Rx.NET's WPF scheduler. + +## Decision + +We will upgrade the centrally managed `System.Reactive` and `Microsoft.Reactive.Testing` +packages to 7.0.0. We will keep the existing target frameworks and public ReactiveProperty +APIs. We will not add a platform-specific Rx.NET package unless a project uses a UI-specific +Rx.NET API; the current WPF integration does not do so. We will also remove the obsolete +`System.Reactive.PlatformServices` using directive from the main library. + +### Alternatives considered + +- **Remain on Rx.NET 6.1.0** — avoids migration work, but leaves the library on the previous + major release and prevents consumers from using the v7 dependency graph consistently. +- **Add all Rx.NET platform packages** — unnecessary for the APIs currently used and would add + dependencies without providing behavior. + +## Consequences + +The library and tests use Rx.NET v7 and benefit from its current supported package layout. +Existing target frameworks remain available because Rx.NET v7 supports netstandard2.0 and +net472 in addition to current .NET targets. Consumers using ReactiveProperty's existing WPF +scheduler do not need an extra Rx.NET UI package; applications that use Rx.NET UI-specific +types directly must reference the corresponding platform package themselves. diff --git a/dev-docs/adr/README.md b/dev-docs/adr/README.md index e79bb773..6d4f1937 100644 --- a/dev-docs/adr/README.md +++ b/dev-docs/adr/README.md @@ -39,3 +39,4 @@ Trivial, easily reversible choices (local refactors, naming) do not need an ADR. | [0003](./0003-reactiveproperty-r3-migration-bridge.md) | Ship a permanent minimal `ReactiveProperty.R3` migration bridge and a migration skill | Accepted | | [0004](./0004-reactiveproperty-r3-wpf-event-to-reactive.md) | Provide R3-targeting EventToReactive trigger actions in a new ReactiveProperty.R3.WPF package | Accepted | | [0005](./0005-remove-vuepress-plain-markdown-docs.md) | Remove VuePress; publish docs as plain Markdown on GitHub | Accepted | +| [0006](./0006-upgrade-system-reactive-v7.md) | Upgrade the System.Reactive dependency to v7 | Accepted |