React Native와 Expo에서 OTA 업데이트를 이해하는 방법
OTA(Over-The-Air) 업데이트는 앱 스토어 심사를 거치지 않고 설치된 앱의 JavaScript 코드와 에셋을 갱신하는 방식입니다. React Native와 Expo 환경에서는 빠른 버그 수정과 작은 기능 개선에 매우 유용합니다.
OTA로 가능한 것
OTA 업데이트는 네이티브 바이너리를 바꾸지 않는 변경에 적합합니다.
가능한 예시는 다음과 같습니다.
- JavaScript 로직 수정
- React 컴포넌트와 화면 변경
- 스타일 수정
- 문구 변경
- JS 번들에 포함된 이미지 교체
- 기능 플래그 변경
OTA로 불가능한 것
네이티브 앱 자체가 바뀌어야 하는 변경은 OTA로 처리할 수 없습니다.
예를 들어 다음은 스토어 재배포가 필요합니다.
- 네이티브 모듈 추가
- 권한 추가
- Expo SDK 버전 변경
- app.json의 네이티브 설정 변경
- iOS/Android 빌드 설정 변경
runtimeVersion이 중요한 이유
OTA 업데이트는 설치된 앱의 네이티브 런타임과 호환되어야 합니다. 호환되지 않는 JS 번들을 내려보내면 앱이 깨질 수 있습니다.
그래서 Expo에서는 runtimeVersion 또는 SDK 정책을 통해 어떤 앱 버전이 어떤 업데이트를 받을 수 있는지 구분합니다.
배포 전략
안전한 OTA 전략은 다음과 같습니다.
- 작은 변경부터 OTA로 배포한다.
- 네이티브 변경은 반드시 새 빌드로 배포한다.
- 채널을 나누어 staging에서 먼저 검증한다.
- 문제가 생기면 이전 업데이트로 롤백할 수 있게 한다.
- 앱 시작 시 업데이트 확인 타이밍을 사용자 경험에 맞게 조절한다.
실무에서 유용한 경우
- 긴급 문구 수정
- API 응답 처리 버그 수정
- 화면 스타일 미세 조정
- 특정 기능 임시 비활성화
- 작은 비즈니스 로직 변경
듀오랩스가 보는 관점
OTA는 모바일 앱 운영의 속도를 크게 높여줍니다. 하지만 모든 것을 OTA로 해결하려고 하면 위험합니다. “JS 변경은 OTA, 네이티브 변경은 스토어 배포”라는 원칙을 명확히 두는 것이 안정적인 운영의 핵심입니다.