Reduce React Native APK Size by 70-80%: Complete Optimization Guide

Reducing the size of a React Native APK by 70-80% is achievable through a combination of code optimization, asset management, build configuration tweaks, and advanced tooling. This guide breaks down proven strategies to shrink your app’s footprint while maintaining top performance and functionality.
Why APK Size Matters?
Large APKs can lead to higher download abandonment, particularly in regions with slower internet or limited device storage. A smaller APK results in:
- Better install rates
- Improved user retention
- Higher Google Play Store rankings
Let’s dive into key techniques for APK size reduction.
Optimize JavaScript and Native Code
Enable Hermes Engine
Hermes compiles JavaScript to bytecode, significantly reducing bundle size and improving startup time.
Android – in android/app/build.gradle
:
project.ext.react = [ enableHermes: true ]
iOS – in Podfile
:
use_react_native!(..., :hermes_enabled => true)
Hermes can reduce JavaScript bundle size by ~40%.
Remove Unused Libraries
- Audit your
package.json
regularly. - Use tools like
npm ls
oryarn why <package>
to identify unnecessary dependencies. - Replace bulky libraries with lighter alternatives:
Replace | With |
---|---|
moment.js |
date-fns or dayjs |
lodash |
Native JS functions |
Full react-navigation |
Import only required navigators |
Enable ProGuard or R8
These tools shrink and obfuscate Java/Kotlin code:
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
Expect native code size reduction of 15–20%.
Optimize Assets and Media
Compress and Convert Images
- Use WebP instead of PNG or JPEG (25–30% smaller).
- Compress images using TinyPNG or Squoosh.
- Use vector icons (
react-native-vector-icons
) instead of bundling multiple static image files.
Load Assets Dynamically
Avoid bundling large media by loading assets from a CDN:
import FastImage from 'react-native-fast-image';
This reduces the initial APK size by loading content only when needed.
Remove Unused Fonts and Locales
- Exclude fonts not used in your UI.
- On iOS, restrict locales in
Info.plist
:
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
</array>
- On Android, configure locales and screen densities in
build.gradle
:
defaultConfig {
resConfigs "en", "xxhdpi"
}
Refine Build Configuration
Generate Android App Bundles (AAB)
AABs let Google Play deliver optimized APKs per device configuration.
In android/gradle.properties
:
android.enableBuildCache=true
android.useAndroidX=true
Build the release AAB with:
./gradlew bundleRelease
Switching to AABs can reduce the APK size by 30–50%.
Split APKs by CPU Architecture
Exclude unnecessary architectures to reduce size:
android {
splits {
abi {
enable true
reset()
include "arm64-v8a", "x86_64"
universalApk false
}
}
}
Splitting by ABI can cut APK size by ~50%.
Advanced Optimization Techniques
Code Splitting and Lazy Loading
Load screens or components on demand:
const Settings = React.lazy(() => import('./Settings'));
This reduces the initial JavaScript bundle size.
Over-the-Air (OTA) Updates
Use CodePush to push updates without needing users to reinstall the app:
appcenter codepush release-react -a <app-name>
This keeps your APK minimal while delivering frequent updates.
Use Dynamic Feature Modules
Split features into downloadable modules:
// settings.gradle
include ':app', ':dynamic_feature'
Only necessary modules are downloaded, reducing install size.
Case Study: Reducing APK from 26MB to 3.1MB
Aglowid IT Solutions achieved a ~88% reduction by applying:
- AABs with architecture splits
- ProGuard and resource shrinking
- WebP compression
- Locale and font pruning
Final Checklist for APK Shrinking
- Enable Hermes for bytecode compilation
- Remove unused dependencies
- Enable ProGuard/R8 and configure shrinking rules
- Use compressed WebP images and vector icons
- Generate AABs and split APKs by architecture
- Implement code splitting and OTA updates
- Audit assets, locales, and fonts monthly
Conclusion
By methodically applying these strategies, you can reduce your React Native APK size by 70–80%. Smaller APKs lead to higher install success, faster updates, and a better user experience. Continuous audits and adopting newer tools (e.g., React Native Reanimated 3) ensure long-term efficiency and performance.