On this page
- 1Choose the Right Architecture
- 2Optimize Images and Assets
- 3Remove Unused Dependencies
- 4Enable Code Shrinking and Obfuscation
- 5Use App Bundles and Dynamic Delivery
- 6Split by CPU Architecture
- 7Download Content On Demand
- 8Optimize Fonts
- 9Reduce Localization Resources
- 10Compress Media Files
- 11Use Lightweight Alternatives
- 12Optimize JavaScript Bundles (React Native)
- 13Optimize Flutter Applications
- 14Optimize Native Libraries
Reducing app size is important for faster downloads, lower uninstall rates, better conversion from app stores, and improved performance on low-storage devices.
Here are the key areas developers should focus on:
Choose the Right Architecture
- Avoid adding unnecessary frameworks or SDKs.
- Prefer modular architecture so only required features are included.
- Separate optional features into downloadable modules when possible.
Optimize Images and Assets
- Use modern image formats such as
WebPorAVIFinstead of PNG or JPEG. - Compress images before adding them to the project.
- Remove unused icons, illustrations, and splash screen assets.
- Use vector assets where possible instead of multiple bitmap sizes.
Remove Unused Dependencies
- Audit third-party libraries regularly.
- Avoid importing entire libraries when only a small portion is needed.
- Replace heavy SDKs with lightweight alternatives if possible.
Example:
- Using a full analytics suite for basic event tracking can add several MB to the app size.
Enable Code Shrinking and Obfuscation
Android
- Enable
R8orProGuard. - Remove unused classes and methods automatically.
iOS
- Enable dead code stripping.
- Remove unused architectures from release builds.
Use App Bundles and Dynamic Delivery
For Android:
- Use the Android App Bundle format instead of APK.
- Users download only resources required for their device architecture and language.
Split by CPU Architecture
Instead of shipping one package containing:
- ARM64
- ARMv7
- x86
- x86_64
Deliver only the architecture required by the user’s device.
Download Content On Demand
Avoid bundling:
- Tutorial videos
- Large animations
- Product catalogs
- Game resources
Download these after installation or when first required.
Optimize Fonts
- Use only required font weights.
- Prefer system fonts where possible.
- Subset custom fonts to include only required characters.
Reduce Localization Resources
- Include only target languages initially.
- Download additional languages on demand if needed.
Compress Media Files
- Compress videos aggressively.
- Use streaming for video content instead of bundling files.
- Convert audio to efficient formats such as AAC or Opus.
Use Lightweight Alternatives
Examples:
- Replace GIF animations with Lottie animations.
- Replace large SVG libraries with optimized vector assets.
Optimize JavaScript Bundles (React Native)
- Enable Hermes engine.
- Remove unused npm packages.
- Enable minification in production builds.
- Use inline requires where applicable.
Optimize Flutter Applications
- Build with
--split-per-abi. - Use
flutter build appbundleinstead of APK. - Remove unused assets from
pubspec.yaml. - Use tree shaking for icons:
flutter build appbundle --tree-shake-icons
Optimize Native Libraries
Native .so libraries are often among the biggest contributors to app size.
- Remove unused ABIs.
- Avoid bundling debugging symbols in production.
- Use stripped release binaries.
Analyze Build Size Regularly
Use platform tools:
- Android Studio APK Analyzer
- Flutter DevTools Size Analysis
- Xcode App Size Report
For most startup apps, the biggest wins usually come from:
- Removing unnecessary SDKs.
- Using App Bundles instead of APKs.
- Optimizing images and fonts.
- Enabling code shrinking.
- Using dynamic feature delivery for rarely used modules.
If you mobile app size is larger as you expected, Consult with our Team