목록 보기
pnpm 모노레포에서 React 19 마이그레이션하기: 숨겨진 호이스팅 레이어가 만든 타입 충돌 트러블슈팅
프론트엔드

pnpm 모노레포에서 React 19 마이그레이션하기: 숨겨진 호이스팅 레이어가 만든 타입 충돌 트러블슈팅

우아한 형제들
우아한 형제들
2026년 3월 24일

두줄요약

pnpm 모노레포에서 React 18과 19를 공존시키며 발생한 타입 충돌을 트러블슈팅했습니다. 호이스팅 차단과 packageExtensions 주입으로 잘못된 React 타입 참조를 해결했습니다.

문제 상황

  • pnpm workspace 모노레포에서 React 18과 19를 앱별로 분리했지만, 내부 호이스팅 레이어 때문에 타입 오염 발생
  • React 19의 @types/react가 React 18 앱의 서드파티 패키지까지 섞이며 TS2322, TS2786 등 다수의 타입 충돌 발생

원인 분석

  • pnpm의 Layer 3 호이스팅 레이어에 동일 패키지의 단일 버전만 올라가는 구조
  • TypeScript가 서드파티 패키지 내부에서 상위 경로의 잘못된 React 타입을 참조하는 해석 순서
  • 호이스팅 차단 후에는 @sentry/react처럼 peerDependencies에 타입을 명시하지 않은 패키지의 의존성 누락 노출

해결 방법

  • .npmrc에서 @types/react, @types/react-dom 호이스팅 제외로 잘못된 타입 참조 차단
  • packageExtensions로 @sentry/react에 @types/react peerDependencies를 가상 주입
  • 주입된 타입이 virtual store에 배치되도록 해 앱별 React 버전과 타입 컨텍스트 정렬

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...