RSS
전체 글

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 전략은 다음과 같습니다.

  1. 작은 변경부터 OTA로 배포한다.
  2. 네이티브 변경은 반드시 새 빌드로 배포한다.
  3. 채널을 나누어 staging에서 먼저 검증한다.
  4. 문제가 생기면 이전 업데이트로 롤백할 수 있게 한다.
  5. 앱 시작 시 업데이트 확인 타이밍을 사용자 경험에 맞게 조절한다.

실무에서 유용한 경우

  • 긴급 문구 수정
  • API 응답 처리 버그 수정
  • 화면 스타일 미세 조정
  • 특정 기능 임시 비활성화
  • 작은 비즈니스 로직 변경

듀오랩스가 보는 관점

OTA는 모바일 앱 운영의 속도를 크게 높여줍니다. 하지만 모든 것을 OTA로 해결하려고 하면 위험합니다. “JS 변경은 OTA, 네이티브 변경은 스토어 배포”라는 원칙을 명확히 두는 것이 안정적인 운영의 핵심입니다.