CodePush — 앱 스토어 심사 없이 업데이트하기
CodePush는 JavaScript 번들만 교체하여 앱 스토어 심사 없이 즉시 업데이트를 배포할 수 있습니다.
버그 수정이나 텍스트 변경을 위해 앱 스토어 심사(1~3일)를 기다리는 것은 비효율적입니다. CodePush는 JS 번들과 에셋만 OTA로 교체합니다.
동작 원리
1. 개발자가 JS 번들 업데이트를 CodePush 서버에 배포
2. 앱 실행 시 CodePush SDK가 서버에 새 버전 확인
3. 새 버전이 있으면 백그라운드에서 다운로드
4. 다음 앱 재시작 시 새 번들 적용
업데이트 가능: JavaScript 코드, 이미지 에셋, JSON 등
업데이트 불가: 네이티브 코드 변경 (Swift/Kotlin)
→ 네이티브 변경은 앱 스토어 업데이트 필요
설치와 설정
npm install react-native-code-push
# App Center CLI
npm install -g appcenter-cli
appcenter login
// App.tsx
import codePush from 'react-native-code-push';
const codePushOptions = {
checkFrequency: codePush.CheckFrequency.ON_APP_RESUME,
installMode: codePush.InstallMode.ON_NEXT_RESTART,
};
function App() {
return <MainNavigator />;
}
export default codePush(codePushOptions)(App);
업데이트 전략
// 1. 사일런트 업데이트 — 사용자 모르게 백그라운드 업데이트
const silentOptions = {
checkFrequency: codePush.CheckFrequency.ON_APP_RESUME,
installMode: codePush.InstallMode.ON_NEXT_RESTART,
};
// 2. 즉시 업데이트 — 다운로드 후 바로 적용 (중요 버그 수정)
const immediateOptions = {
checkFrequency: codePush.CheckFrequency.ON_APP_START,
installMode: codePush.InstallMode.IMMEDIATE,
};
// 3. 사용자 확인 업데이트 — 다이얼로그로 확인
async function checkForUpdate() {
const update = await codePush.checkForUpdate();
if (update) {
Alert.alert(
'업데이트 알림',
`새 버전(${update.label})이 있습니다. 업데이트하시겠습니까?`,
[
{ text: '나중에', style: 'cancel' },
{
text: '업데이트',
onPress: async () => {
await update.download();
await codePush.restartApp();
},
},
]
);
}
}
배포
# Staging 배포 (테스트)
appcenter codepush release-react -a owner/MyApp-iOS -d Staging
# Production 배포
appcenter codepush release-react -a owner/MyApp-iOS -d Production
# 특정 앱 버전만 대상
appcenter codepush release-react -a owner/MyApp-iOS -t "1.2.*"
# 점진적 배포 (25%만)
appcenter codepush release-react -a owner/MyApp-iOS --rollout 25
# 롤백
appcenter codepush rollback -a owner/MyApp-iOS Production
정리
- CodePush는 JS 번들만 교체 하므로 네이티브 코드 변경에는 사용할 수 없습니다
- 사일런트, 즉시, 확인 세 가지 업데이트 전략을 상황에 맞게 선택하세요
rollout옵션으로 ** 점진적 배포** 후 문제가 없으면 전체 배포하세요- 문제 발생 시 ** 롤백 **으로 이전 버전으로 즉시 복구할 수 있습니다
- Apple/Google의 정책상 앱의 ** 핵심 기능 변경은 스토어 업데이트 **로 해야 합니다
댓글 로딩 중...