Skip to content

build(deps): bump ReactiveUI.Binding to 8.4.0 - #4525

Merged
glennawatson merged 1 commit into
mainfrom
build/binding-8.4.0
Sep 27, 2026
Merged

glennawatson merged 1 commit into
mainfrom
build/binding-8.4.0

Conversation

@glennawatson

Copy link
Copy Markdown
Contributor

Summary

Bumps ReactiveUI.Binding / ReactiveUI.Binding.Reactive to 8.4.0, which generates bindings for MAUI and Avalonia controls named with x:Name (or Avalonia's Name).

  • BindingVersion in Directory.Packages.props is now 8.4.0.
  • LoginPage.xaml.cs in ReactiveUI.Samples.Maui now calls Bind/BindCommand instead of the BindUnsafe/BindCommandUnsafe workaround the earlier gap needed; LoginPage.xaml already carried x:FieldModifier="internal" on every bound control.
  • ActivationForViewFetcher.cs (ReactiveUI.Maui) and HostTestFixture.cs (ReactiveUI.Tests and ReactiveUI.Wpf.Tests, both of which compile a physical copy of the file) now call ObservedProperty.Switch explicitly instead of the .Switch() extension call, because ReactiveUI.Binding 8.4.0 adds ObservedProperty.Switch, which is ambiguous with ReactiveUI.Primitives(.Reactive).LinqExtensions.Switch once both are in scope (CS0121).

Why

Picking up ReactiveUI.Binding 8.4.0's generated bindings for x:Name controls on MAUI and Avalonia removes the need for the Unsafe workaround the sample used for its MAUI login page while that generator gap existed.

The version bump also surfaced a real ambiguity: ObservedProperty.Switch, new in 8.4.0, and the existing ReactiveUI.Primitives Switch operator both apply to IObservable<IObservable<T>>, so any call site with both namespaces in scope (true for every ReactiveUI.Maui and ReactiveUI.Tests file, because of the project's global usings) fails to build.

Breaking changes

None for consumers. Internally, two call sites had to disambiguate .Switch() by qualifying the call.

How this was verified

  • dotnet build reactiveui.slnx -c Release -warnaserror passes with 0 warnings/errors on Linux and on Windows (which also covers WPF, WinForms, WinUI and every MAUI platform, since those target frameworks are Windows-only).
  • Every Linux-runnable test project (ReactiveUI.Tests, .Tests.Reactive, Testing.Tests, Splat.Tests, AOTTests, Builder.Tests, Blazor.Tests, Blazor.Tests.Reactive) passes.
  • Every Windows-only test project (Wpf.Tests, Wpf.Tests.Reactive, WinForms.Tests, WinForms.Tests.Reactive, WinUI.Tests) passes, run individually on a Windows VM.
  • ReactiveUI.Samples.Maui and examples/Documentation/Pages/platform-maui both build cleanly on Windows.
  • The platform-maui documentation example's expected output still matches (example-output.cs check).

Notes for the reviewer

The SwitchLatest helpers added to ActivationForViewFetcher.cs and both HostTestFixture.cs files are mechanical: they exist only to pick ObservedProperty.Switch explicitly over the now-ambiguous .Switch() extension call, under the same #if REACTIVE_SHIM seam the rest of the file already uses to pick between the lean and .Reactive namespaces.

I checked every other example project under examples/Documentation/Pages and found no other use of the BindUnsafe/BindCommandUnsafe workaround for x:Name controls; LoginPage.xaml.cs was the only one.

Checklist

  • I have read the Contribute guide
  • The PR title follows Conventional Commits
  • Tests cover this change, or the summary says why they do not
  • New or changed public API has XML documentation

@codecov

codecov Bot commented Sep 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.68%. Comparing base (8eceb3c) to head (3da8f6e).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #4525   +/-   ##
=======================================
  Coverage   93.68%   93.68%           
=======================================
  Files         175      175           
  Lines        6223     6224    +1     
  Branches      742      742           
=======================================
+ Hits         5830     5831    +1     
  Misses        392      392           
  Partials        1        1           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sonarqubecloud

Copy link
Copy Markdown

@glennawatson
glennawatson merged commit 32746d8 into main Sep 27, 2026
15 of 17 checks passed
@glennawatson
glennawatson deleted the build/binding-8.4.0 branch September 27, 2026 02:49
@github-actions

Copy link
Copy Markdown

This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Oct 11, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

⌂ 换网址