How we got to LiveView
LiveView strips away layers of abstraction, because it solves both the client and server in a single abstraction. How real-time app features got me thinking about syncing updates, rather than rendering static content, as the right primitive for connecting app servers to browsers. Sync.rb works like this: the browser WebSockets to the server, and as Rails models change, templates get re-rendered on the server and pushed to the client. Erlang powered WhatsApp, which served 10 million users per server. With React, any state change triggers a re-render, followed by an efficient patch of the browser DOM. LiveView is the same, except the server re-renders the template and holds the state. Elixir applications don't need to arrange ensembles of libraries and transfer formats and lifecycles to build dynamically updating UI; dynamic server rendering is built in. The browser knows how to merge diffs from the server.