Skip to content

Update ReactiveUI (major) - #2384

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/major-reactiveui
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/major-reactiveui

Conversation

@renovate

@renovate renovate Bot commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
ReactiveUI (source) 24.3.0 → 26.0.1 age confidence
ReactiveUI.SourceGenerators (source) 3.2.0 → 4.2.0 age confidence
ReactiveUI.WPF (source) 24.3.0 → 26.0.1 age confidence

Release Notes

reactiveui/reactiveui (ReactiveUI)

v26.0.1

Compare Source

🗞️ What's Changed

🧹 General Changes

🔗 Full Changelog: reactiveui/ReactiveUI@26.0.0...26.0.1

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

v26.0.0

Compare Source

Summary

ReactiveUI 26.0.0 is a major version because the .NET 11 assemblies are built without runtime-async. The public API does not change.

Why runtime-async is off
  • In .NET 10 and older, the C# compiler adds a state machine to each async method. The state machine stores the local variables and tracks where to resume after each await.
  • .NET 11 adds a feature called runtime-async. The runtime does this work instead, so async code can run faster.
  • ReactiveUI 25.x built the .NET 11 assemblies with runtime-async on. The .NET 8 to 10 and .NET Framework assemblies never used it.
  • The feature needs a runtime that supports it. CoreCLR does, and Mono does not.
  • Blazor WebAssembly runs on Mono unless you opt into CoreCLR. Avalonia's browser apps, WASI, Android API levels 21 to 23, and apps that set UseMonoRuntime=true also run on Mono.
  • ReactiveUI built with runtime-async can fail in every app that runs on Mono.
  • A NuGet package ships one build for every runtime, so ReactiveUI leaves the feature off. This matches ReactiveUI.Binding 9.0.0 and Refit 16.0.0.
  • Apps that target .NET 10 or older are not affected. Apps on .NET 11 that run on CoreCLR do not get the speed gain inside ReactiveUI's own async code.
  • You can turn on runtime-async in your own app if it runs only on CoreCLR.
Other changes
  • View WhenActivated is now trim and AOT safe. It watches the view's ViewModel through the registered ICreatesObservableForProperty plugin, as the binding source generator does, instead of reflection. The [RequiresUnreferencedCode] attribute is gone from every view WhenActivated overload, including the WPF ones, so views that call this.WhenActivated(...) publish with Native AOT without trim warnings.
  • ReactiveUI.Binding is updated to 9.0.0. That release also fixes BindCommandUnsafe keeping bindings it had replaced (reactiveui/ReactiveUI.Binding.SourceGenerators#163).

🗞️ What's Changed

🐛 Fixes

🔗 Full Changelog: reactiveui/ReactiveUI@25.1.1...26.0.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

v25.1.1

Compare Source

🗞️ What's Changed
🧹 General Changes
📦 Dependencies

🔗 Full Changelog: reactiveui/ReactiveUI@25.1.0...25.1.1

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

🤖 Automated services that contributed: renovate[bot]

v25.1.0

Compare Source

🗞️ What's Changed
🧹 General Changes
📦 Dependencies

🔗 Full Changelog: reactiveui/ReactiveUI@25.0.1...25.1.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

🤖 Automated services that contributed: renovate[bot]

v25.0.1

Compare Source

Summary

ReactiveUI 25.0.1 adds back the ability to ask an interaction as an observable through IInteraction<TInput, TOutput>. ReactiveUI 25.0.0 removed it by accident.

  • IInteraction<TInput, TOutput>.Handle(input) returns IObservable<TOutput>, as it did in ReactiveUI 24.
  • Interaction<TInput, TOutput>.WhenHandled(input) returns the question as an IObservable<TOutput>.
  • new Interaction<TInput, TOutput>(handlerScheduler) runs each handler on that scheduler, such as RxSchedulers.MainThreadScheduler.
  • Interaction<TInput, TOutput>.Handle(input) still returns Task<TOutput>, so code written against 25.0.0 keeps compiling.

The change comes from ReactiveUI.Binding 8.6.0. The migration guide shows how to use each call.

🗞️ What's Changed
🧹 General Changes

🔗 Full Changelog: reactiveui/ReactiveUI@25.0.0...25.0.1

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

v25.0.0

Compare Source

Summary

ReactiveUI 25.0.0 is a major version. Binding moves to a source-generator-first library, the ReactiveUI source generators now come with every install, and the documentation has been rebuilt. Most apps that use ReactiveObject and the usual binding calls keep compiling, but read the breaking changes below before you upgrade.

Binding moves to ReactiveUI.Binding
  • Property observation and binding now run on ReactiveUI.Binding. It generates the code at build time, so it works with trimming and NativeAOT.
  • WhenAny*, WhenAnyValue, ObservableForProperty, Bind, OneWayBind, BindTo, BindCommand, InvokeCommand, BindInteraction, ToProperty and ObservableAsPropertyHelper<T> keep their names. They now come from ReactiveUI.Binding, which ReactiveUI brings in for you. Existing using ReactiveUI; code keeps compiling.
  • If the generator cannot read a property path, use the matching ...Unsafe overload.
  • ReactiveUI's old reflection-based observation and binding engine is removed. That is about 190,000 fewer lines, and far fewer trimming warnings.
  • View location, view hosts, templates, routing, activation and validation presentation stay in ReactiveUI.
  • The default view hosts on WPF, WinForms, WinUI, MAUI, Apple and Android find views without reflection and are AOT safe. Each has an ...Unsafe twin that also asks the service locator.
  • Routing reports navigation through plain observables of values.
  • The migration guide lists the removed types, the behaviour changes and what to change in your code.
Source generators come with ReactiveUI
  • ReactiveUI.Core now brings ReactiveUI.SourceGenerators. Both ReactiveUI and ReactiveUI.Reactive depend on Core, so every project gets the generators with no extra package.
  • [Reactive], [ReactiveCommand], [ReactiveCollection], [BindableDerivedList] and [IReactiveObject] generate your view model properties and commands at build time. This is now the recommended way to write view models.
  • If your project references an older ReactiveUI.SourceGenerators package directly, restore fails with NU1605. Remove that reference, or move it to 4.0.0 or later.
  • [ObservableAsProperty] and [IViewFor] now come from ReactiveUI.Binding.
New documentation and examples
  • The documentation website at https://reactiveui.net/documentation/reactiveui and its related pages have been rewritten.
  • src/examples/Documentation has a runnable example for every public class and method, one project per website page. The website quotes these examples, and each one checks its printed output, so the docs stay in step with the code.
  • Platform examples cover WPF, WinForms, WinUI, MAUI, Blazor, Android and Apple.
  • These examples replace the old reactiveui/ReactiveUI.Samples repository, which is now archived.
Known issues
  • Interaction.Handle returns Task<TOutput> instead of IObservable<TOutput>. This change was not intended.
Other changes
  • Many bug fixes across Android, Apple, MAUI, WPF, WinUI, routing, suspension, the app builder and ReactiveRecord. The full list is below.
  • Android and iOS device tests now run through dotnet test --device.
🗞️ What's Changed
💥 Breaking Changes
🐛 Fixes
🧹 General Changes
✅ Tests
📝 Documentation

🔗 Full Changelog: reactiveui/ReactiveUI@24.3.0...25.0.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

reactiveui/reactiveui.sourcegenerators (ReactiveUI.SourceGenerators)

v4.2.0: 4.2.0

🗞️ What's Changed
✨ Features

🔗 Full Changelog: reactiveui/ReactiveUI.SourceGenerators@v4.1.0...v4.2.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

v4.1.0: 4.1.0

🗞️ What's Changed
🐛 Fixes

🔗 Full Changelog: reactiveui/ReactiveUI.SourceGenerators@v4.0.1...v4.1.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

v4.0.1: 4.0.1

🗞️ What's Changed
🐛 Fixes

🔗 Full Changelog: reactiveui/ReactiveUI.SourceGenerators@v4.0.0...v4.0.1

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

v4.0.0: 4.0.0

🗞️ What's Changed

💥 Breaking Changes
🧹 General Changes
📝 Documentation
📦 Dependencies
📌 Other

🔗 Full Changelog: reactiveui/ReactiveUI.SourceGenerators@v3.2.0...v4.0.0

🙌 Contributions

💖 Thanks to all the contributors: @​ChrisPulman, @​Copilot, @​glennawatson

🤖 Automated services that contributed: renovate[bot]


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the dependencies Pull requests that update a dependency file label Sep 26, 2026
@renovate
renovate Bot force-pushed the renovate/major-reactiveui branch 2 times, most recently from 28d332f to 12f1525 Compare September 27, 2026 13:05
@renovate renovate Bot changed the title Update dependency ReactiveUI.SourceGenerators to v4 Update ReactiveUI (major) Sep 27, 2026
@renovate
renovate Bot force-pushed the renovate/major-reactiveui branch 5 times, most recently from d61d975 to 33a5ae4 Compare October 3, 2026 12:39
@renovate
renovate Bot force-pushed the renovate/major-reactiveui branch from 33a5ae4 to b091cd3 Compare October 4, 2026 09:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

Development

Successfully merging this pull request may close these issues.

1 participant