В современных фронтенд-фреймворках есть возможность рендерить приложение на сервере, чтобы повысить быстродействие. Допустим, для рендеринга представления нужно получить асинхронно данные от бэкэнда.
Как механизм SSR поймет, что нужно ждать завершения всех асинхронных запросов, перед тем как отрендерить контент? Или механизм не будет беспокоиться об этом, а просто соберет HTML-представление согласно дереву компонентов, а запрос данных и их рендер уже ложится на плечи клиентской среды выполнения?
Сервер - подготавливает разметку HTML, а механизм фронта - просто расставляет готовые блоки, получая их в асинхронном режиме. includeHTML - так и работает (включая работу с локальными файлами вообще без использования сервера).
Если есть зависимости от блоков - это явно указывается при рендеринге (режим сихронизации).
Разные разработчики решают этот вопрос по-разному. Фреймворки лишь предоставляют API для статического рендера, а все архитектурные решения ложатся на плечи разработчиков.
Возможно, вам стоит обратить внимание на готовые решения вроде next и nuxt.