Мне понравилось писать SPA на Elm. Синтаксис лаконичный. Проще Haskell, при этом местами даже лучше него. Архитектура понятная и прозрачная, никакой магии. Для быстрого обновления DOM используется Virtual DOM. В скомпилированный код добавляется небольшой runtime. Только client side.
Правда столкнулся с runtime-багом по undefined, чего в Elm не должно возникать. Скорее всего это говорит о том, что Elm ещё действительно "не готов к продакшн".
Написал недавно
статейку об инструментарии разработчика на Elm.
Русскоязычное сообщество