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 |