Skip to content

[Feature]: Add support for both ReactiveUI 24 API profiles #469

Description

@HMBSbige

Is your feature request related to a problem?

ReactiveUI.SourceGenerators currently documents compatibility with ReactiveUI 23.2.28+, but ReactiveUI 24 introduces two distinct API profiles:

  • The default Primitives-based profile, using the ReactiveUI package family.
  • The System.Reactive-compatible profile, using the ReactiveUI.Reactive package family.

Projects upgrading to ReactiveUI 24 need to be able to continue using ReactiveUI.SourceGenerators regardless of which ReactiveUI 24 API profile they select.

Describe the solution you'd like

Please add official ReactiveUI 24 compatibility for both supported API profiles:

  1. The default Primitives-based ReactiveUI 24 profile.
  2. The System.Reactive-compatible ReactiveUI 24 .Reactive profile.

All currently supported source generators and attributes should compile and operate correctly when the consuming project uses either profile.

Describe alternatives you've considered

The current alternatives are to remain on ReactiveUI 23 or replace source-generated members with manually written implementations.

Neither alternative is suitable for projects adopting ReactiveUI 24.

Suggestions on how to achieve the feature

Keep a single ReactiveUI.SourceGenerators package and detect the available ReactiveUI 24 API profile from the consuming compilation.

Centralize profile-specific namespaces and type mappings, then generate code for either:

  • The default Primitives-based ReactiveUI profile.
  • The System.Reactive-compatible ReactiveUI.Reactive profile.

Add compile-time integration tests for both package families to prevent compatibility regressions.

Additional context

Support should not be limited to only one of the ReactiveUI 24 package families. Both the default Primitives-based profile and the System.Reactive-compatible .Reactive profile should be treated as supported configurations.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions