HATEOAS - интересная концепция - можно написать универсальный UI, который работает с разными компонентами, мы такой делали и еще я один проект видел, где по сути простой фронтенд, который умеет семантическую информацию читать и сразу вся информация и ее организация уходит в backend в данном случае. Т.е. процессы и структуру можно(мне как backend-щику так вообще за) делать на backend-е. А GraphQL - наоборот выглядит так(мне стороннему наблюдателю), будто вся логика уходит на Frontend (поэтому фронтэндщики для фронтендщиков) и соответственно, вместо универсального фронтенда получается специфичный фронтенд (заточенный под задачу или сделанный красиво), а бэкенд пусть будет универсальным, чтобы можно было и разные фронтенды писать, ничего на бэкенде не меняя.