Начал в работе использовать JS библиотеку htmx, позволяет переместить логику с клиента на сервер, запросы выполняются через AJAX, можно через специальные заголовки сервера делать редирект, работать с историей браузера и адресной строкой браузера. В hx- атрибутах HTML тегов указывается логика обработки различных событий, сервер возвращает лишь HTML код, который вставляется в нужное место страницы. Для обработки клиентской логики есть отдельная библиотека hyperscript, в большинстве случаев она не понадобится, хватит и htmx. Авторы проекта перенесли логику своего React приложения на htmx, и добились сокращения всего кода в 1,5 раза. В моих проектах примерно такое же отношение по сокращению кода получается, ведь не надо теперь дублировать код на клиенте и на сервере, и делать шаблонизацию на клиенте. Вроде ничего нового в этом нет, но реально разработка ускоряется и упрощается. Для htmx сделал библиотеку, позволяющую перед отправкой изменять размеры картинки на клиенте, исходный код и описание здесь: https://github.com/ibnteo/hx-image-resize
Смотрю, сам HTML сильно переделывается из-за этих атрибутов. Можно все это практически прозрачно делать. Там самая большая проблема – делить адреса ссылок в href (возможно, в action) на классы: внешние, внутряк и т.п. Это чтобы определять, нужно ли навешивать на ссылку JS-обработчик или, если обработчик навешивается на все подряд, нужно ли выполнять реальную JS-обработку с AJAX-подгрузкой контента и т.п.
Прозрачно сделать можно (в том числе и на HTMX), но тогда надо изучать внимательно JS код, что он делает, иначе не поймёшь где как обрабатывается. Все используют HTML атрибуты для своих целей, сразу видны данные и обработчики.
PWA это другое, просто запуск сайта в браузере в режиме веб-приложения, без адресной строки. HTMX позволяет заменить клиентский код (JS) на меньшее количество серверного (например PHP).