Thoughts
I've had an insight into how to build LFSA—divide the page into "workflows" or "flows" (e.g. a form that the user is filling out, or an
interactive widget). These flows would hold all of the state for a given flow—no child components could hold state. This lets you leverage functional state-flows-down React-like rendering. This state could be stored in the browser's LocalStorage or just memory and signed like a JWT. You could then define mutators for this state, and execute them on the client, then the server. The server, critically, doesn't need to store a copy of this state. And it doesn't need to re-implement the rendering. That is, normally I've thought about the server in LFSA as authoritative of rendering state, but it doesn't need to be, it just needs to be authoritative over mutations to state.
This does have some drawbacks, but it's probably fine.