Generated reactive state
ReactiveGenerator
Keep reactive view models expressive while generated code carries the ceremony.
Overview
A Roslyn source generator, analyzer, and code-fix package for reactive properties, computed observable properties, and change notification.
ReactiveGenerator moves property notification, ReactiveUI helpers, and migration diagnostics into a Roslyn pipeline. Application code keeps readable partial properties while analyzers, code fixes, and deterministic generation provide the repetitive implementation.
INotifyPropertyChanged and ReactiveUI patterns
ObservableAsProperty generation
Analyzers and bulk code fixes
Deterministic design-time output
Built for
Where it fits.
- ReactiveUI and MVVM application teams
- Codebases migrating hand-written notification properties
- Roslyn users studying production source generation
Compatibility & status
9.0+
13 partial properties
Supported
Supported
In the work
Real output,
not a mockup.

Architecture
Clear layers.
Replaceable seams.
Attributes
Class and property annotations declare reactive and computed intent.
Analysis
Roslyn validates partial declarations, inheritance, accessors, generics, and nullability.
Generation
Incremental generators emit notification, helpers, and cached event infrastructure.
Migration
Analyzers and code fixes convert existing boilerplate at file, project, or solution scope.
Inside ReactiveGenerator
One repository.
Multiple serious systems.
Explore the focused capabilities, their package boundaries, architecture, installation, and smallest useful example.
Class- or property-level attributes generate partial property implementations for standard INotifyPropertyChanged and ReactiveUI ReactiveObject patterns, including cached event arguments and inheritance-aware behavior.
1 module→02 · ObservableAsProperty without ceremonyComputed Observable PropertiesObservableAsProperty attributes generate read-only computed properties and helpers, while generated WhenAny methods make reactive dependency pipelines concise and type-safe.
1 module→03 · Convert boilerplate at design timeAnalyzers & Code FixesRoslyn diagnostics recognize convertible property patterns and offer focused or bulk refactorings while validating partial declarations, accessors, generics, and inheritance.
1 module→Quick start
From package
to first frame.
Choose the package workflow used by your repository, then start from the smallest working example. Replace VERSION with the current stable or prerelease version shown on NuGet.
dotnet add package ReactiveGenerator<PackageReference Include="ReactiveGenerator" Version="VERSION" /><PackageVersion Include="ReactiveGenerator" Version="VERSION" />[Reactive]public partial class SearchViewModel : ReactiveObject{ public partial string SearchTerm { get; set; }
[ObservableAsProperty] public partial bool HasQuery { get; }}Package surface
Start focused.
Compose as needed.
Source, docs, samples, and releases
The repository is the source of truth.
Use the current documentation and samples, inspect changes, report issues, or support continued open-source maintenance.