Is this paper of interest?
https://limo.libis.be/primo-explore/fulldisplay?docid=LIRIAS1586071&context=L&vid=Lirias&search_scope=Lirias&tab=default_tab&lang=en_US&fromSitemap=1
I have been using Redux, React and Reselect for our recent single page apps, and I am not satisfied at all. Although it has its benefits, I feel I was more productive with ReactiveUI.
Normalized state gives you identifiers and lookup tables, and these give many of the problems you have with dangling C pointers... And it is very clumsy to work with, since the Redux state must be a simple JSON object, so has no prototype, forcing one to abandon encapsulation of state.
My main problem is efficiently converting normalized state into denormalized view models in such a way that the amount of updates in the view only depend on the number of changes done to the state. Reselect can help, but is akward to work with. I usually end up with custom WeakMap
s for caching.
When using highly optimized immutable structures like a trie for the normalized state, I find it hard to map this to view models (aka props in React land) so that only those view models are updated that are dependent on the changed state... The naive way of doing this results in full re-renders, or at least full virtual dom comparisons... The optimized way of doing this resulted in brittle case specific code, loosing many of the advantages that functional programming brings.
I didn't have these issues with my Sodium - React experiments, since I already introduced splices
to describe the changes done to a collection, and I directly wired Sodium cells to React internal state, but both of these approaches didn't feel general enough, React felt like overkill (I might try Lit-html with Typescript and Sodium), and only using patches (deltas) for collections felt to specific.
The paper I refers to seems to propose a more general incremental FRP system, with collections build on top of that.
But I don't understand the paper in full yet...
I just have the feeling that it must be possible to write web frontend code more efficiently and be more productive
A friend of mine finds all of this silly, he just wrote his own GPU accelerated renderer and draws the whole visible UI again for every change, because when something as complex as a modern video game can do this, surely a bunch of rectangles and text should be doable in 2019 no?
Maybe he has a point, it certainly would make live of a frontend developer soooo much easier