Есть такая весьма полезная, но иногда трудно реализуемая (зависит от выбранного стека) штука, как двухсторонний рендеринг. Преимущества в скорости выдачи готового к потреблению контента, как при первом запросе к сайту (серверный рендеринг), так и при последующих (клиентский рендеринг).
Один из подходов упрощения реализации - вынос рендеринга в отдельный слой, способный работать, как на клиенте так и на сервере. Притом на сервере, скорее всего, он будет работать под node.js (так как на клиенте у нас только js), хотя и не обязательно (handlebars шаблоны легко реализуются на php или python).
При этом слой api может быть реализован на любом языке.
Пример: фронтенд (под ним я понимаю слой UI + UX) на vue, api на Go. Для серверного рендеринга нам нужна упрощенная реализация vue, без байндинга с DOM, но способная выдавать html в виде строки - VueSSR (не очень оптимизированая вещь, но нагрузка на серверный рендеринг как правило не большая).
Есть еще два важных момента:
Во-первых, крайне не желательно, чтоб на клиентской стороне не тратились и так дефицитные ресурсы на старте на рендеринг, который уже выполнен (vueRootVM.$mount()).
Во-вторых, серверному рендерингу скорее всего понадобится доступ к api. Необходимо его упростить, чтобы запросы шли в обход nginx, напрямую, по локальной сети (в случае разных машин под api и рендеринг) или по unix сокету (в случае одной машины).
Подводя итог. Актуально ли делать серверный рендеринг? Зависит от проекта. В любом случае, в современном мире он может существовать только в дополнение к клиентскому. А стоит ли оно того - решает каждый сам.