App size

On this page 7

App size is the storage and network footprint of a mobile application, usually expressed as the download size a user transfers from the store and the install size the app occupies on the device after unpacking, plus the data and cache it accumulates during use. In mobile performance, app size is treated as a key quality metric because it influences install conversion, update adoption, startup behavior and device storage pressure.

App size is not a single number. A store listing, a build report and the device settings screen can all show different values for the same app, because they measure compressed packages, device-specific variants or user data at different moments. Teams that manage size well first agree on which measure they track and why.

How app size is measured

Modern app stores do not deliver one universal package. Android apps are uploaded as an Android App Bundle (AAB), and the store generates optimized split APKs for each device configuration. On iOS, app thinning produces variants tailored to the device model and screen. The size a user downloads is therefore smaller than the uploaded build.

After download, the package is decompressed and sometimes optimized ahead of time, for example by compiling code for the device processor. This makes the install size larger than the download size, often noticeably so. Over time, caches, databases, offline content and logs add a third layer that users see as the app’s total storage use.

MeasureWhat it includesWho notices itTypical relation
Upload sizeFull build with all variants and assetsDevelopers and CILargest build artifact
Download sizeCompressed, device-specific packageUsers on cellular data, store listingSmallest measure
Install sizeUnpacked code, resources and compiled artifactsUsers with full storageLarger than download size
Data and cache sizeUser content, caches, databases, offline mediaLong-term usersCan exceed install size many times
Different measures of app size

What makes an app large

App size grows from a handful of sources, and measuring the composition of a build is the first step to reducing it. Tools such as the APK Analyzer in Android Studio and the App Thinning Size Report in Xcode break a package down by content type.

ContributorTypical causeReduction technique
Native librariesBundled binaries for several CPU architecturesDeliver per-architecture splits only
Images and mediaUncompressed PNG, large video, unused densitiesWebP or AVIF, vector graphics, density splits
Third-party SDKsAnalytics, ads and UI libraries pulled in fullyAudit dependencies, remove unused SDKs
Compiled codeUnused classes and methodsCode shrinking with R8 or dead code stripping
Localization filesStrings and fonts for all languagesLanguage splits, system fonts
Game and 3D assetsTextures, levels, audioOn-demand asset delivery after install
Main contributors to app size

In many apps, third-party SDKs and media assets account for more weight than the team’s own code. A single library added for one minor feature can add several megabytes, together with its own transitive dependencies.

Why app size matters for performance and business

Large apps lose users at the install decision. People on limited data plans, slow networks or devices with little free storage often cancel or postpone large downloads, and the effect is strongest in markets where entry-level phones dominate.

Stores also add friction. The App Store has long applied a cellular download threshold of around 200 MB, above which users are asked to confirm or wait for Wi-Fi, and many Android users restrict app updates to Wi-Fi in store settings. Beyond downloads, a large binary can slow app startup time, raise memory use and make the app a target for removal when the system or user needs space.

  • Lower install conversion for large downloads, especially on cellular networks.
  • Slower update adoption, leaving users on older, less secure versions.
  • Higher uninstall risk when storage runs low.
  • Longer build and test times for the development team.

Platform techniques for reducing app size

Both platforms offer delivery mechanisms that move content out of the initial download. The right combination depends on how much of the app every user really needs on first launch.

TechniqueAndroidiOSBest used when
Device-specific packagesApp Bundle split APKsApp thinning slicingAlways, by default
Code shrinkingR8 minification and resource shrinkingDead code stripping, link-time optimizationRelease builds
Deferred featuresPlay Feature DeliveryOn-demand resourcesFeatures used by a minority of users
Deferred assetsPlay Asset DeliveryBackground assets after installGames and media-heavy apps
Lightweight entry pointInstant experiencesApp ClipsTry-before-install flows
Size reduction options by platform

Teams should add size budgets to continuous integration, failing or flagging a build when the download size grows beyond an agreed limit. This turns size from an occasional cleanup task into a tracked performance metric like crash rate or startup time.

Common mistakes in managing app size

The most frequent mistake is tracking only the upload size, which overstates what users download and hides regressions in device-specific variants. Another is optimizing code while ignoring assets, even though images, fonts and native libraries usually dominate.

Teams also underestimate data growth after install. An app with a small package can still occupy gigabytes through unbounded caches or offline media. Setting cache size limits and cleanup policies protects users and reduces the chance that the system or the user deletes the app.

Finally, aggressive deferral can backfire. Moving a commonly used feature to an on-demand module saves download size but forces a second wait at the moment the user needs it, which may hurt more than the larger initial download would have.

Understanding it simply

App size is how much space an app takes up, both when you download it and once it sits on your phone. Like a suitcase, it holds the program itself, the pictures and sounds it shows, and over time the things you save in it.

Smaller apps download faster, update more easily and leave more room for photos and other apps. That is why developers work hard to pack only what each phone really needs.

Applied in practice

A travel booking company notices that installs of its Android app are weak in regions where many customers use entry-level phones. The download size has grown past 150 MB, mainly because of bundled native libraries for maps, high-resolution destination images and three analytics SDKs.

The team switches its image assets to WebP, enables R8 code and resource shrinking, removes two overlapping analytics SDKs and moves an offline map feature into an on-demand module that downloads only when a user saves a city for offline use. A size budget is added to the build pipeline.

The download size falls to about a third of its earlier value, update adoption speeds up and the install rate in the target regions improves, while users who need offline maps still get them within seconds of requesting the feature.