These things happen, no problem.
It’s clearer what you meant then, but I really don’t follow how arrived at that conclusion and I’m not sure if a 10,000 word article would help either. Maybe describe using only a sentence or two exactly where a front-end using Streams turns from React-mode to jQuery-mode. As allergic as I am to writing JS I’m reasonably sure I’d have noticed if I needed to resort to writing my frontend code in JS rather than Elixir.
So once you have that succinctly described point where streams unavoidably breaks down, I’ll be extremely keen to watch a debate between yourself and the authors of the system you’re saying is doing these bad things.
Zach involved himself by asking how I connected Ash to this topic and as I explained already the declarative motif versus Streams triggered a thought in my overactive mind which resulted in a throwaway remark that perhaps Ash stands for “Anti-Stream Huddle”.
It actually sounds more like your views on development runs somewhat orthogonal to the concepts underpinning Phoenix, LiveView and Streams in the sense that you seem prone to tackling problems in the frontend which others using the Phoenix framework tend to solve on the server well before presenting the result through the frontend which is effectively written in the same language as the server. Sure it involves some JS that runs on the UA, but the clever guys write and test that code so the rest of us don’t have do anything at that level.
That’s actually what my original question was about. I asked for insights into how others handle Tree Views in Phoenix LiveView. I’ve got that mostly sorted now without any additional JS libraries or even code I had to inject at all.
As for managing nested/recursive data in streams I found MapSets to be a powerful enabler. I have some thoughts brewing on how it could be done more efficiently directly in Ecto and using something even more custom-built for flattening recursive structs for sreaming purposes, but that’s a discussion for another day.