Reduce Flutter App Size: Shrink APK & IPA the Right Way
How to reduce flutter app size: split-per-ABI, obfuscation, R8/shrinkResources, AAB over APK, and Xcode IPA tricks — with before/after numbers.
Nobody complains that your app is "too small." But a 40 MB download on a mid-range phone in a low-bandwidth market is a real conversion killer — every extra megabyte costs installs. The good news: learning how to reduce flutter app size is mostly about four levers, and they stack. This tutorial walks through all of them on Flutter 3.x: shipping an AAB instead of a universal APK, splitting APKs per ABI, obfuscating with debug-info splitting, enabling R8/shrinkResources, slimming the iOS IPA, and finally measuring what actually takes space with the size analyzer. What you'll learn Why a Flutter release build is as big as it is (and why the debug APK is even bigger) Shipping an AAB instead of a universal APK — the single biggest win Flutter split per abi : one APK per CPU architecture Flutter obfuscate + --split-debug-info : smaller binaries, readable crash reports R8 minification and shrinkResources on Android iOS-side IPA slimming in Xcode Measuring with the flutter apk size analyzer ( --analyze-size ) Realistic before/after numbers so you know what to expect Why your Flutter app is so big A release build carries three unavoidable passengers: The Flutter engine — the C++ runtime that draws everything. It ships per CPU architecture (arm64-v8a, armeabi-v7a, x86_64), and a *universal* APK bundles all of them. Your Dart code compiled to native (AOT) — plus debug symbols unless you strip them. Assets — images, fonts, and anything under assets/ that you forgot to delete. The debug APK you install with flutter run is much bigger still: it includes the Dart VM with JIT, observatory hooks, and unoptimized code. Never judge your app's size from a debug build. Always measure with flutter build appbundle --release or flutter build apk --release . Reduce Flutter App Size:…