# Avalonia GUI app, FuncUI vs ReactiveUI (with F#)

**URL:** <https://forums.fsharp.org/t/avalonia-gui-app-funcui-vs-reactiveui-with-f/5109>\
**Category:** General\
**Created:** [April 15, 2026, 10:16am UTC](https://forums.fsharp.org/t/avalonia-gui-app-funcui-vs-reactiveui-with-f/5109 "2026-04-15T10:16:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![babysnakes](https://avatars.discourse-cdn.com/v4/letter/b/96bed5/32.png) [@babysnakes](https://forums.fsharp.org/u/babysnakes)\
**Post date:** [April 15, 2026, 10:16am UTC](https://forums.fsharp.org/t/avalonia-gui-app-funcui-vs-reactiveui-with-f/5109/1 "2026-04-15T10:16:21Z")

</div>

Hi,

I’m writing a small System tray + GUI app for the first time, and I selected _Avalonia_ + _FuncUI_ for the GUI. _FuncUI_ is great, and my application is fairly simple, so I created a couple of simple views (e.g. input, button, and response viewer, response type depends on the result of the query).

Out of curiosity and because there were cases (involving using Avalonia extensions) where _FuncUI_ was less helpful, I asked _Claude_ to generate a project using _Avalonia_ + _ReactiveUI_ + _FSharp_ and copy the functionality of the current _FuncUI_ project. After going through several fixes (e.g. I insisted of making it impossible to represent invalid state - as it is so common in OO), I reached a result that is slightly more verbose, but one that I could certainly live with. This is of-course, not enough to make me think about migrating to _ReactiveUI_ 🙂.

Then I asked _Claude_ to compare the testability of both implementations. This is where I was really surprised. I have no experience in desktop apps, (or any UI other then terminal), and almost no experience in OO programming. According to the comparison, it seems that the _MVVM_ pattern, indeed makes the app much more testable without having to resort to headless UI testing.

Since I don’t want to spam the list with long code, I uploaded the sample files (both FuncUI and ViewModel - but without the context of the entire project) and the generated testability report to [this gist](https://gist.github.com/babysnakes/a4bd28ef0bce2c095c69a8d2a9e34aad).

I certainly don’t blindly trust _Claude_, so I was wondering if someone has any experience with _Avalonia_ / _FuncUI_ / _ReactiveUI_ and can share his experience both in terms of testability and other things that I might overlook.

Thanks in advance

Haim

---

<div class="post-metadata">

**Author:** ![altbodhi](https://yyz2.discourse-cdn.com/flex030/user_avatar/forums.fsharp.org/altbodhi/32/1253_2.png) [@altbodhi](https://forums.fsharp.org/u/altbodhi)\
**Post date:** [April 24, 2026, 4:11am UTC](https://forums.fsharp.org/t/avalonia-gui-app-funcui-vs-reactiveui-with-f/5109/2 "2026-04-24T04:11:24Z")

</div>

_MVVM simply mess that you control._

Best way focus to domain specific problem and ignore details of implements.

---

<div class="post-metadata">

**Author:** ![babysnakes](https://avatars.discourse-cdn.com/v4/letter/b/96bed5/32.png) [@babysnakes](https://forums.fsharp.org/u/babysnakes)\
**Post date:** [May 1, 2026, 5:59am UTC](https://forums.fsharp.org/t/avalonia-gui-app-funcui-vs-reactiveui-with-f/5109/3 "2026-05-01T05:59:57Z")

</div>

Thanks.

Eventually, after going even deeper and trying C# and ReactiveUI, I stayed with FuncUI. I am going to investigate switching to RX architecture though. Passing around agents (`MailboxProcessor`s) and having to always monitor their status adds a lot of boilerplate and complexity.

---

<div class="post-metadata">

**Author:** ![altbodhi](https://yyz2.discourse-cdn.com/flex030/user_avatar/forums.fsharp.org/altbodhi/32/1253_2.png) [@altbodhi](https://forums.fsharp.org/u/altbodhi)\
**Post date:** [May 13, 2026, 8:07am UTC](https://forums.fsharp.org/t/avalonia-gui-app-funcui-vs-reactiveui-with-f/5109/4 "2026-05-13T08:07:18Z")

</div>

you can look to speakez.tech blog. It has very intresting idea for F# replace reactive to singals port SolidJS

---

<div class="post-metadata">

**Author:** ![babysnakes](https://avatars.discourse-cdn.com/v4/letter/b/96bed5/32.png) [@babysnakes](https://forums.fsharp.org/u/babysnakes)\
**Post date:** [May 13, 2026, 12:25pm UTC](https://forums.fsharp.org/t/avalonia-gui-app-funcui-vs-reactiveui-with-f/5109/5 "2026-05-13T12:25:43Z")

</div>

Looks interesting (I’m only 20% through the article). However, my project is small enough that I can probably avoid most of the reactive issues raised in the article, and I’m already 60% through the rewrite so I’ll save it for next project.

Thanks
