Что такое Error Boundary и зачем он нужен?
Компонент Error Boundary или граница ошибок представляет собой специальный механизм в React для перехвата JavaScript-ошибок в дочернем дереве компонентов. До появления этого паттерна любая непредвиденная ошибка во время рендеринга могла привести к полному падению всего приложения и выводу белого экрана смерти для пользователя. Граница ошибок позволяет изолировать сбой, предотвратить крах всей страницы и показать пользователю понятную и дружелюбную заглушку.
Важно четко понимать технические ограничения Error Boundary. Этот механизм перехватывает ошибки, возникающие исключительно во время рендеринга, в методах жизненного цикла и в конструкторах дочерних компонентов. При этом он намеренно не обрабатывает ошибки в асинхронном коде, например, внутри колбэков setTimeout, в обработчиках событий клика по кнопке или при выполнении запросов через fetch. Для таких случаев следует использовать стандартные конструкции try/catch.
На практике классический Error Boundary реализуется через создание классового компонента с методами getDerivedStateFromError и componentDidCatch. Первый метод отвечает за обновление локального состояния для отображения запасного интерфейса, а второй используется для логирования информации об ошибке. В современных продакшен-приложениях в componentDidCatch принято интегрировать сторонние сервисы мониторинга и сбора ошибок, такие как Sentry или Crashlytics.
Полноценная архитектура приложения предполагает использование нескольких границ ошибок на разных уровнях иерархии. Например, можно обернуть все приложение целиком в глобальный Error Boundary на случай критических сбоев, а также добавить локальные границы для отдельных вкладок или виджетов. Если сломается виджет погоды, пользователь увидит ошибку только в его блоке, в то время как остальной функционал продолжит исправно работать.
Основные правила работы с Error Boundary: