본문 바로가기
Q&A2026년 5월 30일1분 읽기

Expo SDK 53 EAS Update — OTA 푸시 후 일부 사용자에서 native crash

임
임지원
조회 516댓글 4

Expo SDK 53 + EAS Update로 OTA 푸시하는데 푸시 후 Sentry에 native crash가 0.4% 정도 보고됩니다.

변경사항은 JS 한 줄짜리 텍스트 수정 (button label). native code 손도 안 댔습니다.

Sentry stack:

NSInvalidArgumentException: -[__NSCFConstantString objectForKey:]: unrecognized selector
  at FBReactNativeSpec.mm:142
  ...

영향 받는 디바이스

  • iOS 17.4 — crash 0.8%
  • iOS 17.5+ — crash 0%
  • Android 13 — crash 0.2%

EAS Update는 native code 변경 없으면 안전한 거 아닌가요?

댓글 4

김김영삼5개월 전

EAS Update는 native code "변경"은 안 되지만, runtime version이 매칭되지 않는 사용자에게도 update가 푸시되면 native crash가 발생합니다.


원인 추정 — runtime version


JS 변경 1줄이지만 그 변경에 사용된 React Native API가 특정 native binary 버전 이상이 필요한 경우. 이전 native binary를 깐 사용자(0.4%)는 새 JS가 호출하는 함수가 native에 없어서 crash.


// app.json
{
"expo": {
"runtimeVersion": {
"policy": "sdkVersion" // ← 위험. SDK 같으면 무조건 update
}
}
}

해결 — runtime version을 native binary 단위로:


{
"runtimeVersion": "1.4.2" // ← 수동 관리. native 변경 시 bump
}

또는 자동:


{
"runtimeVersion": {
"policy": "fingerprint" // native fingerprint hash
}
}

fingerprint policy가 가장 안전. native code 1바이트라도 바뀌면 자동 다른 runtime version 부여. update가 호환되지 않는 사용자에게 푸시 안 됨.


긴급 대응 — rollback


eas update --branch production --message "rollback to vX.Y"
# 또는
eas channel:rollout --action revert

장기 정착



  1. fingerprint policy로 전환

  2. iOS 17.4 사용자에게 강제 App Store 업데이트 유도 (in-app banner)

  3. EAS Update 직후 Sentry crash rate 5분 모니터링 → 자동 rollback


iOS 17.4가 약 2%인데 그 안에서 0.4%면 일부만 영향. native API surface 변경된 라이브러리(React Native 0.78+) 업데이트가 원인 가능성 큽니다.

프프론트수진5개월 전

fingerprint policy로 전환 후 OTA 사고 진짜 줄어들었습니다. 다만 fingerprint 변경 시 사용자가 App Store에서 새 binary 받아야 하니까 OTA 빈도는 좀 줄어요. trade-off지만 안정성 압승.

rrn_jin(guest)5개월 전
그리고 OTA 푸시 5분 후 Sentry crash rate 자동 알람 + rollback automation 꼭 구축하세요. 0.4%면 작아 보이는데 MAU 100만이면 4,000명 영향이라 무시 못 합니다.
강강민호(guest)5개월 전
제가 운영하는 서비스에도 비슷한 케이스가 있어서 try해볼 만하네요. 결과 나오면 share할게요.
Ctrl+Enter로 등록