I have a similar aversion to JS as the author, but unfortunately it's still the best tool for the job in manipulating the DOM.
Phoenix LiveView looks really cool. Under the hood though it's injecting JS that diffs the current DOM and the new DOM and renders the changes rather than the entire tree. At the end of the day, it's still a JS enhancement.