Skip to content

docs(reactiveui): document the remaining public API and add the Apple platform page - #1000

Merged
glennawatson merged 9 commits into
mainfrom
docs/reactiveui-audit
Sep 27, 2026
Merged

glennawatson merged 9 commits into
mainfrom
docs/reactiveui-audit

Conversation

@glennawatson

Copy link
Copy Markdown
Contributor

What are the main goals of this change?

  • Better readability (style, grammar, spelling...)
  • Content correction (accuracy, wrong information...)
  • New content

Is this change related to any reported issue? (Optional)

Companion to reactiveui/ReactiveUI#4526, which adds the examples these pages quote. Merge that first; the page excerpts match its source.

Notes (Optional)

The ReactiveUI handbook now documents every public member, with a new Apple page and a Markdown-only landing page.

  • New page: handbook/platforms/apple.md, which covers iOS and macOS controllers, views, hosts, suspension, and table and collection sources. It is linked from the platforms index.
  • Platform pages extended: Android, WPF, WinUI, MAUI and WinForms now cover the members they were missing. The WPF output block is copied from a real Windows run.
  • Rewritten pages: view-location/extending-iviewfor.md bridges a third-party base class instead of the old hand-built popup page. data-binding/avalonia.md now covers ReactiveUI.Avalonia with named controls.
  • Corrections: the WinUI page states that ViewModelViewHost does not choose a view by a contract set later. RoutedViewHost is the host that does. This is a reproduced library defect.
  • Landing page: reactiveui/index.md is plain Markdown (no raw HTML), at grade 8, with a view, view model and model diagram.
  • Readability: guideline, install and handbook pages are now at grade 8.5 or below.
  • CLAUDE.md: gains the soft-tone Material 3 diagram style: the palette, the roles and the rules.
  • Every C# block is a verbatim excerpt of the examples. The Apple page's blocks were checked on Windows, where that project builds.

@glennawatson
glennawatson merged commit ed48a8d into main Sep 27, 2026
4 checks passed
@glennawatson
glennawatson deleted the docs/reactiveui-audit branch September 27, 2026 08:37
glennawatson added a commit to reactiveui/ReactiveUI that referenced this pull request Sep 27, 2026
#4526)

## Summary

**Every public ReactiveUI member now has a documentation example or a
reviewed reason why app code never calls it, including the Apple
platforms.**

- **Core examples.** Activation through
`IActivatableViewModel.Activator`, and an `IObserver<T>` witness
subscribed straight to a `ReactiveCommand` and through
`ReactiveCommandBase`.
- **Platform examples.** New coverage for AndroidX (the
`IReactiveObject` surface on views, `ReactiveActivity` results, USB
permission requests, the fragment `WireUpControls` overload), MAUI and
WinUI hosts and converters, WinForms panel and table set-method
converters, WPF host properties, every `TransitioningContentControl`
transition, the explicit-view `WhenActivated` overloads, and Blend
behaviour properties.
- **New `Pages/platform-apple` project.** An iOS and macOS library app
covering the view controllers, views, hosts, suspension, and the UIKit
table and collection sources, cells and section information. The iOS and
macOS workloads exist only on Windows and macOS, so on Linux the project
compiles a one-line placeholder.
- **Extending `IViewFor`.** A `view-location` example that bridges a
third-party base class to `IViewFor<TViewModel>` with its own activation
fetcher.
- **ReactiveUI.Binding 8.5.0.** Picks up the fix for the generated
`BindCommand` on AppKit `NSButton` targets, so the macOS example binds
its button with `BindCommand`.
- **SourceLink is off for example projects.** Examples are never packed,
and SourceLink warned when an example built from a copy of the
repository without `.git`. Libraries are unchanged.

## Why

**A fresh audit of the public surface after the recent Binding, source
generator and routing changes found members with no example.**

- The handbook pages on reactiveui/website quote these examples
verbatim; the matching page changes are in reactiveui/website (linked
below).

## Breaking changes

**None.**

- Only example projects and the example build settings change.

## How this was verified

**Every console page's `// Output:` blocks match a real run; the
platform apps were run on their platforms.**

- WPF, WinForms, Blend and WinUI ran on a Windows machine, and their
printed output matches the blocks and the pages. Android ran on an
emulator, and every quoted log line appears in the real log. The Apple
project was built for iOS and macOS on Windows. It has not run on a
simulator.

## Notes for the reviewer

**Start with `Pages/platform-apple` (new) and
`src/examples/Directory.Build.props`; the rest adds methods to existing
page projects.**

- `src/Directory.Build.props` gains one condition: the SourceLink
package is skipped when `EnableSourceLink` is `false`, which only the
examples set.
- Two library defects surfaced and are documented as current behaviour,
not worked around: WinUI's `ViewModelViewHost` never uses an app-set
`ViewContract`, and macOS `ReactiveWindowController` has no
`IViewFor<TViewModel>` form, so `WhenActivated` cannot target it.
- Companion website PR: reactiveui/website#1000

## Checklist
- [x] I have read the [Contribute
guide](https://www.reactiveui.net/contribute/index.html)
- [x] The PR title follows [Conventional
Commits](https://www.conventionalcommits.org/)
- [x] Tests cover this change, or the summary says why they do not
- [ ] New or changed public API has XML documentation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant