Flutter App Size Optimization: Reduce APK and AAB Size (2026)
Flutter apps are larger than native apps because they include the Dart runtime and Flutter engine. A simple Flutter app starts around 8-12 MB, while equivalent native apps are 2-5 MB. But you can reduce your app size significantly with the right build settings and asset optimization.
Quick wins: build configuration
| Technique | Size Reduction | Effort |
|---|---|---|
| Split APKs by ABI | 40-60% | Low |
| Enable R8/ProGuard | 10-20% | Low |
| Tree-shake icons | 2-5 MB | Low |
| Compress images | Variable | Medium |
| Use AAB instead of APK | 20-40% | Low |
1. Split APKs by ABI
The biggest single win. By default, Flutter builds a fat APK containing all CPU architectures (arm64, armeabi-v7a, x86_64). Splitting by ABI creates separate APKs for each architecture:
flutter build apk --split-per-abi --release This reduces each APK from ~40 MB to ~15-20 MB. For Google Play, use AAB instead — the Play Store handles per-device optimization automatically.
2. Enable R8/ProGuard
R8 shrinks and obfuscates your Dart and Java code. It is enabled by default in release builds, but verify in android/app/build.gradle:
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
} 3. Tree-shake unused icons
If you use the Material or Cupertino icon fonts, Flutter tree-shakes unused icons by default in release builds. But if you import icon fonts manually, ensure you are not including the full font file:
flutter build apk --release --tree-shake-icons 4. Compress images and assets
Images are often the largest contributor to app size. Use WebP instead of PNG where possible, and compress images before bundling:
cwebp -q 80 input.png -o output.webp Audit your assets folder for unused files and remove them.
5. Use AAB for Google Play
Google Play requires App Bundles (.aab) for new apps. The Play Store generates optimized APKs per device, so users only download the code and resources they need. This typically reduces download size by 20-40% compared to a universal APK.
flutter build appbundle --release 6. Analyze your app size
Use the Android Studio APK Analyzer or the bundletool to inspect what is taking up space:
java -jar bundletool.jar build-apks --bundle=app.aab --output=app.apks --mode=universal Before you submit
App size optimization is part of launch readiness. Run a free Launch Score check to audit your app before submitting.
Frequently asked questions
What is a good app size for a Flutter app?
A simple Flutter app starts around 8-12 MB. Most production Flutter apps are 15-40 MB. Apps over 100 MB may see lower install rates on Google Play.
How do I reduce my Flutter app size?
Use --split-per-abi builds, enable R8/ProGuard, remove unused assets, compress images, use code splitting, and tree-shake unused imports. The biggest win is splitting APKs by ABI.
Does Google Play use AAB or APK?
Google Play requires App Bundles (.aab) for new apps since August 2021. The Play Store generates optimized APKs per device from the AAB, so users download only what they need.