#ReactiveUI

2025-05-29

🖼️ "A study in reactive UI toolkits"
with Jan Fooken at #GUADEC2025
📅 24 July 🕒 09:40 CEST 📍 Brescia
🧪 Can GTK feel like React or SwiftUI? Let’s explore modern takes on building Linux UIs.

🔗 events.gnome.org/event/259/con

#GTK #Linux #Frontend #ReactiveUI

The image shows graphically what's announced in the post. It contains the GNOME logo, the name of the speaker, the photo of the speaker and the title of the talk. It moreover contains a graphical rappresentation of the city of the conference, Brescia, and the dates of the conference.
Wiesław Šoltéssoltes
2025-05-20
2025-04-28

Removing #ReactiveUI #DynamicData from one view, and replacing it with plain old #CSharp.

Git Stats, 11 files changed
Removed 371 lines
Added 343 lines
2025-03-24

“Vanilla JavaScript for flavouring, a full-fledged feast for large projects.”

Meet dd<el> – the Vanilla JavaScript library for building reactive UIs with syntax close to native DOM! No build step required, just native DOM with superpowers. ✨ #ReactiveUI based on signals and events.

- NPM: npmjs.com/package/deka-dom-el
- GitHub: github.com/jaandrle/deka-dom-e (use star if u like it)
- Docs & examples: jaandrle.github.io/deka-dom-el

#WebDev #JavaScript #TypeScript #frontend #npm

// Simple Hello World with reactive elements
import { el } from "deka-dom-el";
import { S } from "deka-dom-el/signals";

function HelloWorld() {
  // Create a count signal with an initial value of 0
  const count = S(0);
  // Create UI that automatically updates when signals change
  return el().append(
    el("h2", S(() => `Hello World ${count.get()} times!`)),
    // Update state on button click
    el("button", {
      textContent: "Increment",
      onclick: () => count.set(count.get() + 1)
    }),
  );
}
// Add to the page
document.body.append(
  el(HelloWorld),
);// (Derived) signals
import { el } from "deka-dom-el";
import { S } from "deka-dom-el/signals";

// Create a signal and a derived computation
const count = S(0);
const doubled = S(() => count.get() * 2);
const isEven = S(() => count.get() % 2 === 0);

document.body.append(
  // Dynamic text content that updates automatically
  el("p", { textContent: S(() => `Count: ${count.get()}`) }),
  el("p", { textContent: S(() => `Doubled: ${doubled.get()}`) }),

  // Conditional elements based on signal state
  S.el(isEven, even => even
    ? el("p", "Even number!")
    : el("p", "Odd number!")
  ),

  // Simple button to update state
  el("button", {
    textContent: "+1",
    onclick: () => count.set(count.get() + 1)
  })
);// Event Handling and Delegation
import { el, on, scope, dispatchEvent } from "deka-dom-el";

function TodoItem({ textContent, onDelete }) {
  const { host }= scope;
  const dispatchEdit = dispatchEvent("todo:edit", host);
  // Lifecycle events (for example for cleanup)
  host(
    on.disconnected(() => { }),
  );
  return el("li").append( // <= host element
    el("span", { textContent }),
    el("button", "Edit", on("click", () => dispatchEdit("edited"))),
    el("button", "Delete", on("click", () => onDelete())),
  );
}

// Using the component with event handlers
document.body.append(
  el("ul").append(
    el(TodoItem, {
      textContent: "Learn dd<el>",
      onDelete: () => confirm("Are you sure?")
    },
	  on("todo:edit", text => alert(`Editing: ${text}`))
    ),
  )
);
Wiesław Šoltéssoltes
2024-12-20

Just released my Reactive source generator for and with inherited Reactive attribute support, thanks to early adopter the library is getting better each release github.com/wieslawsoltes/React

Wiesław Šoltéssoltes
2024-12-13

Just release big update to my ReactiveGenerator v0.9.2 source generator
github.com/wieslawsoltes/React contains many bug fixes and lots of unit tests

2024-12-08

Ah DynamicData, how I’ve missed your ability to make easy ways to create observable collections and also your sporadically documented code, examples that start well past the starting line, and sometimes xmldoc methods.

#avaloniaui #reactiveui #csharp

Wiesław Šoltéssoltes
2024-11-19

Just release update for C# source generator that automatically implements property change notifications using either standard or patterns github.com/wieslawsoltes/React

2024-11-16

ReactiveUI in avalonia making me insane. Trying to get a basic textbox validation to fire only after a user has interacted with a field once. 99% sure sleep will fix this but going off the docs providing no joy in how to wire this up right.

One of these days I’ll follow through on my threat to document my solutions in blog posts so others can suffer slightly less.

#avaloniaui #reactiveui

Yoh Deadfallyoh@hachyderm.io
2024-07-11

A nice addition to Kinetic. Now properties have debugging visualizers too! So, it's possible to see the observers in addition to the current value of any property.

github.com/YohDeadfall/Kinetic

#dotnet #reactiveui

Code in C#:

var person = new Person("John Doe", "Somewhere in the Universe");
var addressChange = person.Address.Subscribe(a => Console.WriteLine(a));

class Person : ObservableObject
{
    private string _name;
    private string _address;

    public Person(string name, string address) =>
        (_name, _address) = (name, address);

    public Property<string> Name => Property(ref _name);

    public Property<string> Address => Property(ref _address);
}

// person
// ├ Address
// │ ├ Observers    Observers = 1
// │ │ └ [0] SubscribeBox
// │ └ Value        "Somewhere in the Universe"
// └ Name
//   ├ Observers    Observers = 0
//   └ Value        "John Doe"
Yoh Deadfallyoh@hachyderm.io
2024-07-09

Just merged a feature improving the debugging experience in Kinetic. Now it's possible to inspect the whole chain of state machines as a single list instead of a mind-blowing hierarchy of fields and subscribers like it was before or as it is in Rx.NET.

github.com/YohDeadfall/Kinetic

#dotnet #reactiveui

Code in C#:

var source = new PublishSubject<int>();
var observer = source   // + observable
                        // ├ ObserverStateMachine
    .Where(x => x > 0)  // ├ WhereStateMachine
    .Select(x => x + 1) // ├ SelectStateMachine
    .ToObservable();    // └ ObservableStateMachine
Alvin Ashcraft 🐿️alvinashcraft@hachyderm.io
2024-06-21

Refactoring a ReactiveUI .Net MAUI app to a more functional approach by Rich Woollcott.

#dotnetmaui #dotnet #reactiveui #xaml #csharp #mobiledev
appmilla.com/latest/refactorin

Alvin Ashcraft 🐿️alvinashcraft@hachyderm.io
2024-06-17
2024-03-27
C#-Source Snippet, lines 55 to 59.

_parent = _parentId.Select(id => id switch
{
	{ } => noteStore.Watch((int)id),
	_ => Observable.Empty<Note?>(),
}).Switch(null).ToProperty(this, nameof(Parent), deferSubscription: true);
2024-02-27

With #Avalonia, I don't think #ReactiveUI (especially the ViewLocation-stuff, i.e. ViewModelViewHost, RoutedViewHost) are useful anymore.
CompiledBindings make the PropertyBindingHook (mostly) obsolete.
The only things I'm using from ReactiveUI are Splat, DynamicData and reactive properties then.

Losing Splat and DynamicData is a no-no, but outside of that?

MEDI and Splat with Avalonia make up for a lot of stuff I use ReactiveUI for, which can be replicated more easily.

#DotNet

Yoh Deadfallyoh@hachyderm.io
2024-02-16

Friday, what a wonderful day! The day when another work week comes to an end, and the day when I wrote my first ever article, so now you have something to spend the weekend on reading about #dotnet, #reactiveui, #avaloniaui, and properties because it's all about them!

github.com/YohDeadfall/YohDead

Without @oskardudycz and @thephd that work wouldn't be done at the level where it's now. Thank you for helping me in polishing it and suggesting improvements!

2023-10-23

Hey #ReactiveUI bubble.

What's the common solution to the following problem:
- In your MainView you have a RoutedViewHost
How do you implement a "landing" page.
DefaultContent with landing page or
WhenActivated execute navigation to some landing page

If not DefaultContent, how do you make sure, that the root router is not accidentally NavigateAndReset'ed (thus deleting the initial landing page)?

#CSharp #AvaloniaUI #DotNet

2023-10-19

#dotnet #windowsforms #reactiveui
Hm. Somehow ObserveOnDispatcher doesn't work for Windows Forms applications. Neither does Scheduler.CurrentThread as argument to ObserveOn.

Apparently only RxApp.MainThreadScheduler does the trick?

2023-07-17

Anyone know a good intro to #ReactiveProgramming / #ReactiveExtensions for web/API developers on #DotNet?

I've read IntroToRX.com as well as the documentation to #ReactiveUI, but I clearly don't grasp it, since I keep shooting myself in the foot (e.g., keep causing the UIs to freeze).

Much appreciated. ❤️

2023-05-28

Si te interesa aprender sobre iniciación a #Maui y #ReactiveUI, aprovecha para asistir al meetup de @dotnetmalaga que impartirá Marco Antonio Blanco en la #OpenSouthCode23.
opensouthcode.org/conferences/

Si te interesa aprender sobre iniciación a #Maui y #ReactiveUI, aprovecha para asistir al meetup de @dotnetmalaga que impartirá Marco Antonio Blanco en la #OpenSouthCode23.
https://www.opensouthcode.org/conferences/opensouthcode2023/program/proposals/686?s=09

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst