@kloud has joined the channel
Just watched the si-frame introduction. It is really cool how the whole stack comes together - signaali + si-frame + vrac for rendering. 👏 Being a Solid.js fan it excites me to have a viable signal-based UI framework for cljs.
Good morning @kloud, and welcome to the channel. Yeah, it surprised me too when every libraries clicked together 🙂
Did you try to run the js framework benchmark? Is there a performance gain using current fine-grained rendering implementation vs. Reagent/Uix?
Fine-grained reactivity does not automatically mean good performance. Solid does some clever things in a way how it compiles its JSX templates to achieve the performance. In opposite example Vue 3 is also based on fine-grained reactivity, but uses VDOM for rendering, so it leaves performance on the table.
> Vrac and Signaali don't have optimizations on purpose, because the development may still make the implementation evolve. I want to avoid premature optimizations. Makes total sense 👍
The original idea which pushed me to write Vrac is the DSL, and it's not fully implemented yet.
Having it done will have a bigger impact than improving the performances (which nobody really needs at this point)
Besides simpler mental model regarding derived data the performance is another big selling point for signal-based implementations. I did implement the framework benchmark in the past. I am just curious 🙂 If I find time I might try to implement it, will post to #vrac if I get to it.
That would be quite nice to have. Let me know if you get stuck, I will gladly help.
Currently the fragment implementation is not efficient, dynamic collection's updates make the parent dom node replace (detach + reattach) all its children (but we keep most of the children each time). I have a plan to improve this in an efficient way later, but it's not a priority.
I didn't run any benchmark against anything React-based lib, it would take me some time and I don't think it is necessary. Solid JS probably has done that already and has shown that the fine grained approach is unsurprisingly faster. Vrac and Signaali don't have optimizations on purpose, because the development may still make the implementation evolve. I want to avoid premature optimizations.
Can Signaali/Vrac run as cljc on JVM? I expect having non-js based implementation should make Server Side Rendering viable for faster initial load times then switch over to client side rendering for interactivity.
very cool, looking forward to it
Signaali already runs on CLJC. The unit tests run on both Browser and JVM. At the moment, Vrac runs on CLJS only. Server side rendering is not in the priority list, but I have plans to make an example app where the state is managed in the server via web socket communication.
By the way, because Signaali and Vrac are separate projects, there is a #vrac channel which is more appropriate to discuss the later.