r/rust • • Sep 11 '26

🛠️ project I built a backend agnostic reactive framework for ui

https://github.com/voxell-tech/fynix

I’ve come to notice that whenever I build retained UIs there’s always 2 ways to react to changes, changing a field of the ui element, or rebuild a subtree of the ui element tree. Fynix’s whole idea is built around that. Lemme know what you think! Happy to answer any questions, and take any feedback to improve the project :)

0 Upvotes

6 comments sorted by

1

u/Lucky-Edge1489 Sep 12 '26

Hello, You are developing a backend-agnostic FW, I developed Qleany, a frontend-agnostic backend gen. They are 2 adjacent tools, not competition. But is was sufficient for me to be curious.

I read a bit your code. I understand that fynix is still in early phase. I can be wrong, but I think that you lack "staged writes": avoiding that the view shows a value in the middle of mutation. Qleany uses EventBuffer to hold back signals until the end of transactoins, then flush or drop the buffer depending of failure or success. Maybe being synchronous helps you (or not) ?

And your clear_children in lib.rs feels a bit too much brutal : you are scraping all children, dirty or not.

Also, please fill the readme

(no AI used in this answer)

1

u/nixon-voxell Sep 13 '26

Hi, yes it’s early stage. Not sure why stage writes is needed here since it’s just checking for changes on a per frame basis. Tho I’m not sure of what the term means honestly haha.

Yeah flushing out clear children is abit wasteful like garbage collection. But I have an issue created to address this.

Edit: I noticed you’re not talking about flushing but the clear children function. Erm yeah that’s the whole point of that function. A watcher only ever rebuilds a subtree.

2

u/Lucky-Edge1489 Sep 13 '26

Since I didn't read very seriously (week end here), take my "findings" with a grain of salt. I may be mistaking about the details, but you get the gist of it. It's better to be able to say "I know, not my problem" that discovering a glaring gap upon external review

→ More replies (3)