zerovoids.dev
react-compiler설정

panicThreshold

panicThreshold: 'none' | 'critical_errors' | 'all_errors'

컴파일 에러를 만났을 때 빌드를 멈출지, 그 함수만 건너뛸지 정한다. 기본은 'none'.

verified v1.0 · 2026-08-05
react-compilerpanic-thresholdbuildconfig

무엇

panicThreshold는 컴파일러가 에러를 만났을 때 어떻게 반응할지 정하는 옵션이다. 기본값은 'none'이다.

['babel-plugin-react-compiler', {
  panicThreshold: 'none', // 기본값이자 권장값
}]

무슨 일이 일어나나

세 값에 따라 에러가 빌드를 멈추는 문턱이 달라진다.

  • 'none'(기본·권장) — 컴파일 못 하는 컴포넌트는 건너뛰고 빌드를 계속한다. 그 컴포넌트는 최적화 없이 정상 동작한다.
  • 'critical_errors' — 치명적 컴파일 에러에서만 빌드를 실패시킨다.
  • 'all_errors' — 어떤 컴파일 진단이든 만나면 빌드를 실패시킨다.

'none'에서 컴파일러는 문제 있는 코드를 스스로 감지해 알아서 건너뛴다.

사용법

프로덕션 빌드는 항상 'none'으로 둔다. 빌드가 컴파일러 문제로 깨지지 않고, 최적화 못 하는 컴포넌트만 원래대로 돌아 배포가 안정된다.

babel.config.js
module.exports = {
  plugins: [
    ['babel-plugin-react-compiler', {
      panicThreshold: 'none',
    }],
  ],
}

실무 예시

더 엄격한 값은 개발 중 디버깅에만 쓴다. 어떤 컴포넌트가 왜 안 잡히는지 드러내고 싶을 때, 환경에 따라 문턱을 바꾼다.

babel.config.js
const isDev = process.env.NODE_ENV !== 'production'

module.exports = {
  plugins: [
    ['babel-plugin-react-compiler', {
      // 개발에선 에러를 드러내고, 배포는 안전하게
      panicThreshold: isDev ? 'critical_errors' : 'none',
    }],
  ],
}

왜 중요한가

빌드 안정성을 지키는 안전판이다. 기본값이 이미 안전한 쪽('none')이라 대부분은 손댈 일이 없다. 더 엄격한 값이 유용한 건 개발 중 문제를 캐낼 때뿐이며, 그때도 프로덕션 빌드에까지 새어 들어가지 않게 조심하면 된다.

Reference