Что хостится и что не хостится
Что проверяют
Различаете ли вы, где код лежит, и где он исполняется. За наивной формулировкой прячется практический вопрос: какой хостинг нужен вашему проекту и что нельзя отдавать в браузер.
Как отвечать
Хостится всё, что браузер скачивает по сети: разметка, стили, бандлы скриптов, шрифты, картинки, медиа, служебные файлы вроде манифеста и карты сайта. Клиентский код тоже лежит на сервере или в сети доставки контента, просто исполняется на устройстве пользователя.
На сервере остаётся то, что в браузер попадать не должно: серверный рендер и обработчики запросов, доступ к базе, ключи и токены, интеграции с оплатой и почтой. Сама база наружу не публикуется, клиент работает с ней только через программный интерфейс.
Вами не хостится то, что живёт у пользователя: содержимое локального хранилища и куки, кэш браузера, его файлы, пока их не загрузили. Чужие скрипты и шрифты со сторонних источников хостятся их владельцем, и это отдельная точка отказа.
Практический вывод для фронтенда: статика ложится на объектное хранилище с раздачей через сеть доставки; одностраничному приложению нужен возврат index.html на неизвестный путь, иначе прямой заход на вложенный маршрут даст ошибку. Серверному рендеру нужна среда исполнения, на чистой статике он не поднимется.
Где спотыкаются
Говорят, что клиентский код не хостится. Он хостится ровно так же, как картинка, разница только в месте исполнения, и такой ответ выдаёт путаницу между хранением и выполнением.
Кладут ключ внешнего сервиса в клиентскую сборку или в переменную с публичным префиксом и считают её скрытой. Всё, что доехало до браузера, читается в исходниках и во вкладке сети, значит секрет нужен на серверной стороне.
Переносят проект с серверным рендером на статический хостинг и получают пустую страницу или ошибку на прямом заходе, потому что выполнять серверную часть и подставлять точку входа на произвольный путь там некому.