Вам нужно исключить зависимость от роутера в вашей либе. Делается это разными способами в зависимости от сборщика. Какой сборщик у вас? Если vite, то в его конфиге нужно правильно настроить параметры build.rollupOptions.external.
По хорошему сам реакт тоже нужно исключить из сборки либы.
PeerDependencies это несколько иное. Этот параметр говорит, что чтобы ваша либо могла быть установлена в другом проекте, в этом проекте должны быть установлены зависимости, перечисленные в peerDeps. И все. Этот параметр никак не влияет на сборку либы.
Не в том направлении думаете. Когда вы бросаете запрос с истекшим токеном, вам бек должен ответить, что токен истёк. Далее уже вы фронтом кидаете запрос на новый токен и повторяете первый запрос.
Проверять токен на фронте, это неверный шаг. Всё что прилетело на фронт, заведомо нельзя доверять.
Собственно, а почему нет? Можно, и многие именно так и делают. Можно также использовать кастомный хук, например useSidebarItems, или функцию высшего порядка HOC withSidebarItems.
Данные нужно запрашивать только тогда, когда они нужны вашему приложению. Если они нужны "сразу" при открытии приложения - можно фетчить в корневом компоненте, хотя так все же никто не делает. Кроме танков есть еще 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 - значение ошибки