iOS App Size Calculator: Estimate IPA & Download Size
Estimate your iOS app's download and install size, understand what drives app size, and apply App Thinning and asset optimization to stay under App Store cellular limits.
App Store Size Limits
| Limit Type | Size | Notes |
|---|---|---|
| Cellular download limit | 200 MB | User can override in iOS Settings |
| Total app bundle | 4 GB | Including all on-demand resources |
| On-demand resources per tag | 512 MB | Hosted by Apple CDN |
| Recommended download size | <50 MB | Best conversion rates on App Store listings |
What Drives iOS App Size
Understanding the composition of your IPA helps target the right optimizations. Unzip your .ipa to inspect its contents:
# Unzip and inspect your IPA
cp MyApp.ipa MyApp.zip && unzip MyApp.zip -d MyApp_Contents
# Typical IPA structure:
# Payload/MyApp.app/
# MyApp — compiled binary (often the largest single file)
# Assets.car — compiled asset catalog (images, colors)
# Frameworks/ — embedded frameworks (React Native, Hermes, etc.)
# _CodeSignature/ — code signing data
# Base.lproj/ — localization strings
# Check sizes of each component
du -sh MyApp_Contents/Payload/MyApp.app/*
du -sh MyApp_Contents/Payload/MyApp.app/Frameworks/* In a typical React Native app, size is distributed roughly as follows:
| Component | Typical Size | Reduction Strategy |
|---|---|---|
| React Native framework | 8–15 MB | Enable New Architecture (smaller) |
| Hermes engine | 3–6 MB | Already smallest JS engine option |
| JavaScript bundle | 1–10 MB | Tree shaking, dynamic imports, remove unused deps |
| Images and assets | 5–50 MB+ | WebP format, asset catalogs, ODR |
| Native dependencies | 2–20 MB | Audit and remove unused native modules |
App Thinning Techniques
App Thinning is automatic when you distribute through the App Store, but you can maximize its effectiveness:
# 1. Use Asset Catalogs for all images
# Xcode compiles .xcassets into Assets.car and generates
# device-specific slices automatically
# 2. Provide 1x, 2x, 3x variants — App Thinning delivers only what's needed
# (iPhone 15 Pro = 3x only, older devices = 2x)
# 3. Convert images to WebP for significant compression
# Use cwebp tool:
brew install webp
cwebp -q 80 input.png -o output.webp
# WebP is 25-35% smaller than PNG at same quality
# 4. Enable vector assets to avoid multiple raster sizes
# In Asset Catalog: Scales = Single Scale, Render As = Template Image On-Demand Resources (ODR)
On-Demand Resources let you host large assets on Apple's servers and download them only when needed. Ideal for tutorial content, seasonal themes, or level packs:
// Request an on-demand resource tag in Swift
import Foundation
let resourceRequest = NSBundleResourceRequest(tags: ["level-2-assets"])
resourceRequest.beginAccessingResources { error in
if let error = error {
print("Failed to load resources: \(error)")
return
}
// Assets are now available in the app bundle
let imageURL = Bundle.main.url(forResource: "level2-background",
withExtension: "jpg")
}
// Release resources when done to free device storage
resourceRequest.endAccessingResources() Generate an App Size Report
Xcode can generate a detailed size report before you submit to the App Store:
# Archive and export with size report
# In Xcode: Product > Archive
# In Organizer: Select archive > Distribute App
# Choose: Development > Next > Check "Include app size report"
# The exported folder contains AppThinning.plist and a size report
# Or use xcodebuild for CI:
xcodebuild archive \
-workspace MyApp.xcworkspace \
-scheme MyApp \
-archivePath build/MyApp.xcarchive
xcodebuild -exportArchive \
-archivePath build/MyApp.xcarchive \
-exportOptionsPlist ExportOptions.plist \
-exportPath build/export/ Frequently Asked Questions
What is the App Store size limit for iOS apps?▼
Apps downloaded over cellular are limited to 200MB (raised from 100MB in iOS 13). There is no hard limit for downloads over Wi-Fi, but Apple recommends keeping apps under 4GB total. The install size (on-device) can be larger than the download size because the IPA contains compressed assets that expand during installation.
What is the difference between download size and install size?▼
Download size (IPA size) is the compressed bundle transferred from the App Store. Install size is what the app occupies on device after decompression and installation. Install size is typically 2–3x larger than the download size. App Store Connect shows both metrics for each build you submit.
What is App Thinning?▼
App Thinning is Apple's process of delivering only the code and resources a specific device needs. It has three components: slicing (device-specific binary variants), bitcode (recompilation by Apple for each chip architecture), and on-demand resources (assets downloaded at runtime). Together, they can reduce delivered app size by 30–60% for asset-heavy apps.
How do I check my app's size before submitting to the App Store?▼
Archive your app in Xcode (Product > Archive), then in the Organizer window click 'Distribute App' and choose 'Development' distribution. In the export options, check 'Include app size report'. Xcode generates a detailed breakdown by framework, asset catalog, and binary segment. Alternatively, examine the .ipa file directly — it's a ZIP archive you can unzip and inspect.
What is On-Demand Resources (ODR) in iOS?▼
On-Demand Resources let you tag assets (levels, additional content, large media) that are not included in the initial download but are fetched from Apple's servers when needed at runtime. This dramatically reduces initial download size for content-heavy apps like games. The OS caches downloaded resources and purges them if storage is needed.
Should I use bitcode for my iOS app?▼
Apple deprecated bitcode for iOS in Xcode 14 (2022). Apps built with Xcode 14+ no longer include bitcode by default, and the App Store no longer processes it. If you're on a newer Xcode version, bitcode is not relevant to your size optimization strategy. The benefits bitcode provided (Apple recompiling for new chips) are now handled differently.
Related Products
on GumroadDeveloper Productivity Bundle
Stop rebuilding the same setup every project. 51 VSCode snippets, 40 Git aliases, 5 Docker Compose stacks, 5 GitHub Actions workflows, 5 README templates, and a dotfiles kit. Set up a professional dev environment in under an hour.
Buy on Gumroad →AI Prompt Engineering Toolkit
58 structured prompt templates for Claude, ChatGPT, and Gemini — organized by use case. Code Review, Debugging, Documentation, Architecture, and 10 model-specific tips. Stop writing prompts from scratch.
Buy on Gumroad →Developer Cheat Sheet Bundle
10 print-ready cheat sheets for the tools developers use every day: Git, Docker, Linux CLI, SQL, Regex, HTTP Status codes, VS Code shortcuts, Bash scripting, jq/JSON, and Markdown.
Buy on Gumroad →You Might Also Need
Axios Interceptor Builder
Build Axios interceptor configurations visually. Add auth token injection, automatic token refresh, retry with exponential backoff, and global error handling. TypeScript ready.
Open free tool →
Web Performance Checklist
Interactive web performance checklist covering images, fonts, JavaScript, CSS, caching, and server. Check off items to track your score out of 100 and export as Markdown.
Open free tool →
Lighthouse Score Simulator
Estimate Lighthouse performance scores based on JS bundle size, CSS, images, TTFB, and render-blocking resources. Get LCP, FID, CLS, FCP estimates.
Open free tool →
More Free Tools
Related Articles
React Native 0.74+ New Architecture: Bridgeless Mode & JSI Deep Dive
Explore React Native's New Architecture in 0.74 and beyond. Learn how Bridgeless Mode, JSI, TurboModules, and Fabric renderer eliminate the legacy bridge bottleneck and transform app performance.
Expo SDK 52: Universal Apps with Native Modules
Expo SDK 52 brings React Native New Architecture as default, Expo Modules API, DOM Components, and React Native DevTools integration. Build universal apps with native modules the modern way.
Flutter vs React Native in 2026: Performance Benchmarks & Honest Comparison
Flutter vs React Native 2026: real performance benchmarks, architectural differences, developer experience, ecosystem maturity, and which framework wins for your next mobile project.
Flutter vs React Native 2026: Complete Cross-Platform Comparison
An in-depth comparison of Flutter and React Native for cross-platform mobile development in 2026. Performance, ecosystem, hiring market, code examples, and when to choose each framework.
Flutter vs React Native vs Kotlin Multiplatform 2026: Which Should You Choose?
Deep comparison of Flutter, React Native, and Kotlin Multiplatform in 2026. Performance benchmarks, developer experience, ecosystem, hot reload, native modules, and real code examples to help you pick the right cross-platform framework.
Enjoying this tool? Get more like it.
Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.
Unlock AI-Powered Dev Tools
- ⚡ AI Code Review, Doc Generator & SQL Builder
- ⚡ All premium templates & early access
- ⚡ Member discounts on Gumroad products
$9/mo after trial · Cancel anytime
Want the full toolkit?
Get DevPlaybook Pro
Every template, guide, boilerplate, and automation script in one bundle. 13 premium products — grab them all at once and save big.
MIT licensed · Instant download · No subscription
See what's included → Browse all deals →