OTA 업데이트 — EAS Update와 배포 전략
EAS Update는 Expo의 공식 OTA 업데이트 서비스로, CodePush의 대안입니다. JS 번들과 에셋을 앱 스토어 심사 없이 즉시 배포합니다.
설치와 설정
# EAS Update 설정
eas update:configure
# 업데이트 배포
eas update --branch production --message "버그 수정: 로그인 오류"
# 채널별 업데이트
eas update --branch preview --message "새 기능: 프로필 수정"
채널과 브랜치
빌드 프로필과 업데이트 채널 매핑:
development 빌드 → development 채널 → 개발 업데이트
preview 빌드 → preview 채널 → QA 테스트 업데이트
production 빌드 → production 채널 → 사용자 업데이트
같은 빌드에 여러 JS 번들 업데이트를 배포 가능
네이티브 코드가 변하지 않는 한 앱 재빌드 불필요
업데이트 확인과 적용
import * as Updates from 'expo-updates';
// 자동 업데이트 (기본)
// app.json에서 설정
{
"expo": {
"updates": {
"enabled": true,
"checkAutomatically": "ON_LOAD",
"fallbackToCacheTimeout": 0
}
}
}
// 수동 업데이트 (커스텀 로직)
async function checkForUpdates() {
try {
const update = await Updates.checkForUpdateAsync();
if (update.isAvailable) {
await Updates.fetchUpdateAsync();
Alert.alert(
'업데이트 완료',
'새 버전이 적용됩니다. 앱을 재시작합니다.',
[{ text: '확인', onPress: () => Updates.reloadAsync() }]
);
}
} catch (error) {
console.error('업데이트 확인 실패:', error);
}
}
롤백 전략
# 현재 배포된 업데이트 목록 확인
eas update:list --branch production
# 특정 업데이트로 롤백
eas update:republish --group <update-group-id>
# 브랜치의 업데이트 삭제 (원래 빌드 번들로 복귀)
eas update:delete --branch production
OTA vs 스토어 업데이트 판단 기준
| 변경 내용 | 배포 방법 |
|---|---|
| 텍스트, 스타일 수정 | OTA |
| 버그 수정 (JS) | OTA |
| 새 화면 추가 | OTA |
| 네이티브 모듈 추가 | 스토어 업데이트 |
| SDK 버전 업그레이드 | 스토어 업데이트 |
| 권한 추가 | 스토어 업데이트 |
정리
- EAS Update 는 JS 번들만 교체하므로 네이티브 변경에는 사용할 수 없습니다
- 채널 시스템 으로 개발/QA/프로덕션 업데이트를 분리하세요
- 문제 발생 시 즉시 롤백 이 가능합니다
- 스토어 심사 없이 수분 내 배포 가 완료됩니다
- Apple/Google 정책을 준수하여 핵심 기능 변경은 스토어 업데이트 로 처리하세요
댓글 로딩 중...