Flutter Performance

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

TechniqueSize ReductionEffort
Split APKs by ABI40-60%Low
Enable R8/ProGuard10-20%Low
Tree-shake icons2-5 MBLow
Compress imagesVariableMedium
Use AAB instead of APK20-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.

Run your free Launch Score

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.