ReactiveUI 27.0.0 moves modern .NET support to .NET 10 and .NET 11, removes the .NET 8, .NET 9 and .NET Framework 4.6.2 targets, and updates the Primitives, Binding, SourceGenerators and Splat dependencies. This is a major release because applications targeting the removed frameworks must retarget before upgrading, and projects that disable implicit usings must explicitly import the ReactiveUI namespaces they use.
.NET 8 and .NET 9 removal
.NET 8 and .NET 9 both reached Microsoft's end of support on 10 November 2026. Microsoft no longer provides security fixes, servicing updates or technical support for either version. ReactiveUI's modern .NET targets are now .NET 10 and .NET 11, including their supported UI platform variants. See Microsoft's end-of-support announcement and the .NET support policy.
.NET Framework 4.6.2 (net462) removal
Microsoft lists the end of support for .NET Framework 4.6.2 as 12 January 2027. We are removing this target ahead of that deadline as part of the same compatibility change. This reduces the legacy build and dependency combinations we maintain. Packages that provide .NET Framework assets target net47, net471, net472, net48 and net481; available targets vary by package and UI platform. See Microsoft's .NET Framework support policy.
Implicit usings respect your project settings
ReactiveUI's transitive package imports now respect the consuming project's ImplicitUsings setting. Projects that set it to false or disable, or leave it unset, must add explicit using directives for the ReactiveUI and binding namespaces they use. Projects using true or enable retain the automatic imports. This applies to the lean, System.Reactive and WPF package imports. See the change and migration details.
Dependencies and platform updates
- Updated Splat to 22.0.1, ReactiveUI.Primitives to 10.0.0, ReactiveUI.Binding to 10.0.0 and ReactiveUI.SourceGenerators to 5.0.0. These dependency releases have their own version numbers; their major versions do not need to match ReactiveUI's version.
- Updated framework-specific dependencies and build tooling while preserving intentional compatibility pins.
- Updated the iOS documentation app to UIKit's scene lifecycle and aligned Apple example builds with the current SDK toolchain. The .NET 10 macOS deployment minimum is preserved.
- Aligned analyzer settings with ReactiveUI.SourceGenerators, removed Roslynator and cleaned up unused central package entries and redundant explicit ValueTuple references. Remaining .NET Framework targets already provide ValueTuple.
Upgrading
Retarget .NET 8 or .NET 9 applications to .NET 10 LTS or .NET 11, including the matching platform target for UI applications. For .NET Framework applications, prefer 4.8 or 4.8.1 where supported by your Windows version. Update the ReactiveUI packages used by your application together and review the dependency release notes when upgrading.
If you cannot retarget yet, keep using a compatible ReactiveUI 26.x version while planning the migration. Staying on an older package does not extend Microsoft's runtime support. As with Splat's framework transition, removing these targets lets us focus maintenance and dependency updates on the remaining framework combinations.
๐๏ธ What's Changed
๐ฅ Breaking Changes
- dae5e93 fix(build)!: honor consumer implicit usings (#4539) @glennawatson
๐ Fixes
- bc21ce2 fix(examples): configure the builder test fixture @glennawatson
- be5a638 fix(testing): preserve the fluent builder API @glennawatson
- 7265945 fix(examples): retain the shell title as instance data @glennawatson
- 830fd10 fix: resolve example and test helper diagnostics @glennawatson
- 350aba8 fix(ci): build current platform sources @glennawatson
- 9d22679 fix: adopt the UIKit scene lifecycle @glennawatson
- 2c0187f fix: satisfy scene lifecycle analyzers @glennawatson
- 637440d fix: preserve the net10 macOS deployment minimum @glennawatson
๐งน General Changes
- d379116 build(deps): remove unused SQLite package versions @glennawatson
- 85f8205 build(deps): remove redundant package pins @glennawatson
- 389ee22 build: target net10.0 and net11.0, add every .NET Framework TFM, update packages @glennawatson
- 1e398bc ci: align workflows with the shared actions-common layout @glennawatson
- 19232eb ci: match the required Apple SDK toolchain @glennawatson
- d78c75d ci: match Apple builds to their Xcode workloads @glennawatson
- 9e3004b ci: run Windows tests with the referenced Windows App SDK runtime @glennawatson
- 1bbcdab build: drop net462 from the .NET Framework targets @glennawatson
- 06abd86 build: align analyzers with source generators @glennawatson
- 4a96316 ci: simplify package publishing @glennawatson
- aa5bfb2 build(deps): update ReactiveUI dependencies @glennawatson
๐ฆ Dependencies
- 2f277b0 chore(deps): update actions/setup-dotnet digest to 0f4a354 (#4553) renovate[bot]
- d9c8d14 chore(deps): update dependency roslynator.analyzers to 5.0.1 (#4531) renovate[bot]
- 990046c chore(deps): update dependency microsoft.sourcelink.github to 10.0.403 (#4546) renovate[bot]
- 721f544 chore(deps): update actions/download-artifact digest to 9000827 (#4536) renovate[bot]
- 15b6d89 chore(deps): update dependency microsoft.testing.extensions.codecoverage to 18.12.0 (#4537) renovate[bot]
๐ Full Changelog: 26.0.1...27.0.0
๐ Contributions
๐ Thanks to all the contributors: @glennawatson
๐ค Automated services that contributed: renovate[bot]