Skip to content

Commit c30088a

Browse files
authored
Revise getting started guide with RxAppBuilder and ecosystem (#920)
Expanded the getting started documentation to highlight RxAppBuilder as the recommended initialization method, added a modern code sample, and reorganized key features and ecosystem libraries. Updated MVVM explanation, provided more resources, and clarified next steps for new users.
1 parent dbb986f commit c30088a

File tree

1 file changed

+65
-17
lines changed

1 file changed

+65
-17
lines changed

reactiveui/docs/getting-started/index.md

Lines changed: 65 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,79 @@ See our <a href="~/docs/handbook/index.md">Handbook</a> for the ReactiveUI docum
66

77
## Getting Started
88

9-
To get started visit our <a href="~/docs/getting-started/installation/index.md">Installation</a> page.
9+
To get started visit our <a href="~/docs/getting-started/installation/index.md">Installation</a> page to install the appropriate NuGet packages for your platform.
1010

11-
The [Compelling Example](compelling-example.md) walks through creating a more complete application, demonstrating the power of ReactiveUI and Reactive Extensions.
11+
### Modern ReactiveUI with RxAppBuilder (Recommended)
1212

13-
## Why MVVM?
13+
**RxAppBuilder** is the recommended way to initialize and configure ReactiveUI applications (introduced in v21.0.1). It provides a fluent API for setting up dependency injection, view/view model registration, and platform-specific services:
14+
15+
```csharp
16+
var app = RxAppBuilder.CreateReactiveUIBuilder()
17+
.WithWpf() // Or WithMaui(), WithBlazor(), WithWinUI(), etc.
18+
.WithViewsFromAssembly(typeof(App).Assembly)
19+
.WithRegistration(locator =>
20+
{
21+
// Register your services
22+
locator.RegisterLazySingleton<IScreen>(() => new MainViewModel());
23+
})
24+
.BuildApp();
25+
```
1426

15-
The Model-View-ViewModel (MVVM) pattern helps create more portable and maintainable codebases for cross-platform .Net applications. It increases the amount of code that can be shared between different platforms (iOS, Android, etc.) and makes testing easier.
27+
Learn more about RxAppBuilder in the <a href="~/docs/handbook/rxappbuilder.md">RxAppBuilder Guide</a>.
28+
29+
### Key ReactiveUI Features
1630

1731
ReactiveUI makes it easy to combine the MVVM pattern with Reactive Programming by providing features such as:
1832

19-
- [WhenAnyValue](~/docs/handbook/when-any.md)
20-
- [ReactiveCommand](~/docs/handbook/commands/index.md)
21-
- [ObservableAsPropertyHelper](~/docs/handbook/observable-as-property-helper.md)
22-
- [WhenActivated](~/docs/handbook/when-activated.md)
23-
- [Data Binding](~/docs/handbook/data-binding/index.md)
33+
- **[RxAppBuilder](~/docs/handbook/rxappbuilder.md)** - Modern application initialization and dependency injection
34+
- **[ReactiveUI.SourceGenerators](https://github.com/reactiveui/ReactiveUI.SourceGenerators)** - Compile-time code generation for reactive properties and commands
35+
- **[WhenAnyValue](~/docs/handbook/when-any.md)** - Observe property changes reactively
36+
- **[ReactiveCommand](~/docs/handbook/commands/index.md)** - Asynchronous, composable command execution
37+
- **[ObservableAsPropertyHelper](~/docs/handbook/observable-as-property-helper.md)** - Transform observables into read-only properties
38+
- **[WhenActivated](~/docs/handbook/when-activated.md)** - Manage subscriptions and prevent memory leaks
39+
- **[Data Binding](~/docs/handbook/data-binding/index.md)** - Type-safe, reactive data binding
40+
- **[User Input Validation](~/docs/handbook/user-input-validation.md)** - Declarative validation with ReactiveUI.Validation
41+
42+
The [Compelling Example](compelling-example.md) walks through creating a more complete application, demonstrating the power of ReactiveUI and Reactive Extensions.
43+
44+
## Why MVVM?
45+
46+
The Model-View-ViewModel (MVVM) pattern helps create more portable and maintainable codebases for cross-platform .NET applications. It increases the amount of code that can be shared between different platforms (Windows, iOS, Android, Web, etc.) and makes testing easier.
2447

2548
<img src="~/images/mvvm.png" width="500" alt="mvvm">
2649

27-
## Explore ReactiveUI
50+
## Explore the ReactiveUI Ecosystem
51+
52+
ReactiveUI is much more than just a MVVM helper. Take a look at the following projects to get started exploring what is available:
53+
54+
### Core Libraries
55+
56+
- **[DynamicData](https://github.com/reactivemarbles/DynamicData)** - Reactive collections based on Rx.NET
57+
- **[ObservableEvents](https://github.com/reactivemarbles/ObservableEvents)** - Generate observables from .NET events
58+
- **[Splat](https://github.com/reactiveui/Splat)** - Cross-platform dependency injection and logging
59+
- **[Akavache](~/docs/handbook/akavache/toc.yml)** - Asynchronous key-value store with SQLite persistence
60+
- **[ReactiveUI.Validation](~/docs/handbook/user-input-validation.md)** - Reactive validation for user input
61+
62+
### Platform Extensions
63+
64+
- **[ReactiveUI.SourceGenerators](https://github.com/reactiveui/ReactiveUI.SourceGenerators)** - C# source generators for ReactiveUI
65+
- **[Maui.Plugins.Popup](https://github.com/reactiveui/Maui.Plugins.Popup)** - MAUI popup plugin with ReactiveUI support
66+
- **[Sextant](https://github.com/reactiveui/Sextant)** - Navigation library for Xamarin.Forms using ReactiveUI
67+
68+
### Additional Tools
69+
70+
- **[Fusillade](https://github.com/reactiveui/Fusillade)** - HTTP request prioritization and rate limiting
71+
- **[Punchclock](https://github.com/reactiveui/punchclock)** - Asynchronous work queue with prioritization
72+
73+
### Resources
74+
75+
- **[Samples](~/docs/resources/samples.md)** - Open source applications built with ReactiveUI
76+
- **[Blog](~/articles/2020-07-16-article-on-elevated-values.md)** - Release notes and announcements
77+
- **[Videos and Presentations](~/docs/resources/videos.md)** - Videos and presentations about ReactiveUI
2878

29-
ReactiveUI is much more than just a MVVM helper. Take a look at the following projects to get started exploring what is available
79+
## Next Steps
3080

31-
- [DynamicData](https://github.com/reactivemarbles/DynamicData) - Reactive collections based on reactive extensions
32-
- [ObservableEvents](https://github.com/reactivemarbles/ObservableEvents) - Build Observables from Events
33-
- [Sextant](https://github.com/reactiveui/Sextant)- Navigation library for Xamarin.Forms using ReactiveUI
34-
- [Samples](~/docs/resources/samples.md) - Open Source applications built with ReactiveUI
35-
- [Blog](~/articles/2020-07-16-article-on-elevated-values.md) - Release Notes and Announcements
36-
- [Videos and Presentations](~/docs/resources/videos.md) - Videos and Presentations
81+
1. **[Install ReactiveUI](~/docs/getting-started/installation/index.md)** for your platform
82+
2. **Follow the [Compelling Example](compelling-example.md)** to build your first reactive app
83+
3. **Read the [Handbook](~/docs/handbook/index.md)** to learn about advanced features
84+
4. **Join the Community** on [Slack](https://join.slack.com/t/reactivex/shared_invite/zt-lt48skpz-G5WDYOAuzA80_MByZrLT0g)

0 commit comments

Comments
 (0)