You can look into drab, an elixir server-side DOM manipulation library: https://github.com/grych/drab. I've never used it, but many people in the Elixir community think it holds a lot of potential.
This project seems really interesting, I guess it could pretty much replace SPAs (and related javascript fatigue) in a lot of use cases. Am I missing some significant limitation other than moving some computation back to the servers?
The only real limitation I can see for now is a response time for the actions, which might be done locally, without requesting anything from the server. Eg, you don't want to do animation loop with Drab, for this just use the ol' good JS.