Возможно… не уверен. Сейчас довольно легко добавить этот класс к любому шаблону компонента — достаточно использовать хелпер bodyClass. Например, в отдельной теме мы делаем так:
<template>
{{bodyClass "custom-homepage"}}
...
</template>
Это даёт тот же результат, что и хук onPageChange, но работает надёжнее. Класс будет добавлен к тегу body только пока компонент отображается.
Если компонент уже имеет все необходимые данные, то да, нет причин, по которым он не мог бы быть отрендерен вместе с остальной частью приложения. Однако в большинстве случаев компоненту потребуется сделать запрос для получения дополнительных данных, что вызывает отображение индикатора загрузки. Честно говоря, я не могу придумать простого способа ускорить эту загрузку.
Кстати, мы внесли дополнительное улучшение в эту функцию. До недавнего времени представление для краулера настраиваемой домашней страницы нельзя было изменить. Теперь это возможно через серверный HTML-выход: DEV: Fix custom homepage crawler display and override by pmusaraj · Pull Request #31841 · discourse/discourse · GitHub