React Native 0.63 업그레이드 후 iOS 빌드 실패 해결

문제 상황

프로젝트를 React Native 0.63으로 업그레이드한 후 iOS 빌드가 실패했다. Xcode 12로 업데이트한 직후라 타이밍이 겹쳐서 원인 파악에 시간이 걸렸다.

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_RCTWebSocketModule"

원인

0.63 버전부터 Flipper가 기본 포함되면서 CocoaPods 의존성 구조가 변경됐다. 특히 Xcode 12의 build system과 충돌하는 부분이 있었다.

해결 과정

1. CocoaPods 캐시 정리

cd ios
rm -rf Pods Podfile.lock
pod deintegrate
pod install

2. Podfile 수정

Flipper 버전을 명시적으로 고정했다.

use_flipper!({ 'Flipper' => '0.54.0' })
post_install do |installer|
  flipper_post_install(installer)
end

3. Xcode Build Settings

Build Active Architecture Only를 Debug에서 YES로 설정했다. 시뮬레이터 빌드 시간도 단축되는 효과가 있었다.

추가 이슈

M1 맥에서 작업하는 동료는 추가로 sudo arch -x86_64 gem install ffi 실행이 필요했다. ARM 아키텍처 관련 이슈인데, 아직 생태계가 완전히 대응하지 못한 것 같다.

결론

React Native 업그레이드는 항상 신중해야 한다. 특히 네이티브 의존성이 많은 프로젝트일수록 더 그렇다. 다음부턴 업그레이드 전에 이슈 트래커를 먼저 확인하는 습관을 들여야겠다.