I agree with you, writing UI usually is unnecessarily painful.
I have been playing with projects which use the concept of reactive programming, mainly Elm, RxJS and React. I feel comfortable with this approach, however, I miss having a more generic solution supporting both web, mobile and desktop. There are two frameworks which come close to that, QtQuick and Xamarin with f#. I have worked using the first for a while, it is really convenient and easy to use but it is difficult to write complex apps. The second I didn't have a chance to try yet.
I also would like to know more about practical solutions for writing UI in a sane way.