React Error Boundary — 컴포넌트 에러 격리
한 컴포넌트가 죽었다고 앱 전체가 흰 화면? 그건 1990년대 얘기. Error Boundary 한 번에.
React 의 단점 하나 — 컴포넌트 트리 안 어딘가에서 에러가 throw 되면 전체 화면이 사라진다. 콘솔에 에러 + DOM 비어있음. 사용자 입장에선 "흰 화면" 사고. Error Boundary 가 이 에러를 잡아 격리하고 fallback UI 를 보여준다.
이번 18편은 Error Boundary 의 정확한 동작 + 회사 stack 표준 react-error-boundary 라이브러리 + 17편 TanStack Query 와 결합 + Sentry 같은 에러 추적 통합.
1. Error Boundary 가 잡는 것 / 못 잡는 것
먼저 한계를 알아야. Error Boundary 는 "렌더 중 throw 된 에러" 만 잡는다.
data.user.name 처럼 null 접근, 잘못된 JSX 반환, render 중 호출한 함수에서 throw — 이 모두 Error Boundary 가 catch.
2. 라이브러리 — react-error-boundary 가 표준
React 공식은 클래스 컴포넌트 + componentDidCatch·getDerivedStateFromError 로 만들라고 했었지만, 함수형 시대에 직접 만들 이유 0. react-error-boundary 가 사실상 표준.
핵심 props — FallbackComponent (에러 시 표시), onError (Sentry·DataDog 등 외부 로깅), onReset (재시도 시 정리), resetKeys (이 값이 바뀌면 자동 reset).
3. 배치 전략 — 여러 단계로 격리
Error Boundary 한 개를 최상위에만 두면 — 작은 에러도 화면 전체가 fallback 으로 바뀜. 결제 위젯 에러로 헤더까지 죽는 식. 여러 단계로 중첩해 영향을 격리.
레이어 — ① 최상위 (Fatal): 전체 트리가 죽었을 때만 (rare). ② 페이지 단위: 한 페이지 에러가 다른 페이지에 영향 안 가게. ③ 위젯 단위: 결제·차트·실시간 알림 같은 독립 위젯. 17편 Suspense 와 짝지어 "로딩 → 데이터 도착" 이 안전한 격리.
4. Sentry · 에러 추적 통합
production 에선 에러를 사용자에게만 보여주고 끝나면 안 됨. 개발자가 받아 디버깅 가능해야. Sentry 가 가장 흔한 선택.
Sentry 가 자동 수집 — stack trace, 사용자 브라우저·OS, 직전 액션 (breadcrumb), session replay (옵션). 한 사용자가 "에러 났어요" 라고만 알려와도 정확한 컨텍스트 확보.
const handleError = useErrorHandler(); try { ... } catch (e) { handleError(e) } 패턴으로 강제로 boundary 까지 전달. 17편 useQuery 는 자동으로 boundary 까지 throw 해서 이 패턴 불필요.
Error Boundary 가 자리 잡으면 production 사고가 사용자 경험에 미치는 영향이 한 단계 떨어진다. 19편부터는 디자인·스타일 — React 의 CSS 전략 3대 옵션 비교.
다음 글
React 교재 19편 — CSS 전략 비교. Tailwind · CSS Modules · CSS-in-JS 중 무엇을 언제.
© 2026 주나이테크(주) @JUNAITECH