React Native 앱 번들 크기 최적화 작업 기록
문제 상황
안드로이드 APK 크기가 52MB에 달해 배포 전 최적화가 필요했다. 특히 저사양 기기 사용자가 많은 서비스 특성상 용량 문제는 치명적이었다.
원인 분석
npx react-native-bundle-visualizer로 번들을 분석한 결과:
- Moment.js의 모든 locale 파일이 포함됨 (500KB)
- 사용하지 않는 Lottie 애니메이션 파일들
- 디버그용 소스맵이 릴리즈 빌드에 포함
적용한 최적화
1. ProGuard 설정 강화
// android/app/build.gradle
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
2. Moment.js 대신 date-fns 사용
// Before
import moment from 'moment';
moment(date).format('YYYY-MM-DD');
// After
import { format } from 'date-fns';
format(date, 'yyyy-MM-dd');
번들 크기 8MB 감소.
3. 이미지 리소스 최적화
- PNG를 WebP로 변환 (화질 손실 거의 없음)
- Lottie 애니메이션 중 미사용 파일 제거
react-native-fast-image도입으로 캐싱 개선
4. Split APK 적용
android {
splits {
abi {
enable true
reset()
include 'armeabi-v7a', 'arm64-v8a'
universalApk false
}
}
}
ABI별로 APK를 분리해 각 아키텍처당 10MB씩 절약.
결과
- 최종 APK 크기: 28~32MB (ABI별)
- 앱 설치 시간 체감상 개선
- Play Store 다운로드 전환율 소폭 상승
번들 분석 도구를 정기적으로 돌려보는 것이 중요하다는 것을 다시 한번 확인했다.