Данные нужно запрашивать только тогда, когда они нужны вашему приложению. Если они нужны "сразу" при открытии приложения - можно фетчить в корневом компоненте, хотя так все же никто не делает. Кроме танков есть еще RTK Query с блекджеком и ... ну вы поняли.
Если ошибка у 1 пользователя, я бы смотрел в сторону плагинов, установленных у пользователя в браузере. Сам по себе Firefox повлиять на js не может. Пусть отключит все плагины.
PHP на бекэнде выступает в роли API - отвечает данными на запросы фронта (React). Сам PHP ничего не рендерит, только отдает данные как правило в формате JSON.
React.JS - это фронт, он занимается генерацией/отрисовкой страниц, отправкой запросов на бек, обработкой полученных от бека данных. Вся работа с шаблонами, страницами, CSS и анимацией происходит тут.
const [errors, setErrors] = useState({
name: '',
teleph: '',
email: '',
});
// когда нужно устанавливается одну ошибку
setErrors({ ...errors, [name]: value })
// где name - имя ключа объекта с ошибками, value - значение ошибки
HTTPS обязателен для работы с аудио или видео через JS. Подойдет любой валидный SSL-сертификат, в том числе и от Let`s Encrypt. Насчет "самодельных" сертификатов сказать не могу - не пробовал.
Очень просто. Когда пользователь авторизовался, с сервера в ответе должна прилетать его роль. Сохраняешь роль в сторе и в зависимости от роли перенаправляешь пользователя на нужный роут. Роль должна проверяться в одном из верхне-уровневых компонентов - например, в общем layout (шаблоне).
Страница товара у вас физически будет одна. Реакт это про работу с состоянием. Id товара это часть состояния, меняется айди, меняется состояние, отправляется запрос в бд, происходит обновление данных на странице.