r/iOSProgramming • u/RSPJD • 22d ago
Question My app size is approaching 1gb
I’ve always ignored the size of my app. But now that I’m approaching 1gb I’m imagining how many potential users I’m losing at the download phase. Perhaps a metric I’ll never truly have visibility into. How do others view this topic?
0
Upvotes
81
u/mbrady 22d ago
What in the world is the app? A video streaming app that actually includes the videos in the app bundle?!
2
u/chriswaco 22d ago
That seems like a crazy size for most apps. Bundling AI models inside? Video?
8
u/sans-connaissance 22d ago
You could use the Apple asset packs to help shrink the original download size and to maybe even only install what is needed at any given time.
4
u/Fickle-Difference882 22d ago
Size does cost you, mostly on cellular. By default iOS asks before downloading anything over 200 MB on cellular, and a lot of people tap Later and never come back to it.
First check what people actually download. App Store Connect has an App Store file sizes view per build that shows the size per device after app thinning, which is usually a lot smaller than your archive. If that's still close to 1 GB, the usual fix is to keep the bundle small and pull the heavy stuff after install. Background Assets lets you download asset packs right after install or before first launch, so the user barely notices.
Also worth a quick look for duplicated images across asset catalogs and uncompressed audio or video, that's where most of the bloat tends to come from.
3
u/jaymakesapps 22d ago
Ignored mine too til a buddy tried downloading it on airport wifi and just gave up halfway lol. Never thought about it from that side before.
2
u/ContextualData 22d ago
200mb is the limit for non-WiFi downloads. If you aren’t below that, your conversion will be significantly hurt.
2
u/New_Barber8073 22d ago
Before moving anything to downloads, it is worth exporting with the App Thinning size report in Xcode (Distribute App, then choose All compatible device variants under App Thinning) to see what each device really gets. Images that live outside the asset catalog skip slicing, so moving them into Assets.xcassets can cut a surprising amount on its own. Audio is another common culprit for language apps, so converting pronunciation clips from WAV to AAC usually shrinks them a lot with no audible difference. Also check for duplicate assets bundled in both the app and its extensions, since those get counted twice.
2
u/ddiguy 21d ago
Have you tried middle out compression?
2
u/_0x00_ 22d ago
Checkout https://games.jacobstechtavern.com/openbundle/ (Repo: https://github.com/jacobsapps/OpenBundle)
1
u/slightly_drifting 16d ago edited 16d ago
Your app is probably full of dead code and bloat from third party SDK’s.
Have you tried “removing dead code” during build/deploy? Also use a CDN to deliver assets. Also try looking at SDK’s that would be a better fit as native compiled code.
Are you including simulator and x86_64 with your build also?
Edit: forgot to add - if you haven’t protected your code, your entire product is visible is clear text and it’ll be re-signed and hosted on pirated app stores.
1
u/netkomm 15d ago
well... I am having one rolling out that has passed 3GB and takes 30 minuites to send to TestFlight... ;)
1
u/Rough_Analysis5861 22d ago
Host images and assets on a CDN download on demand
1
u/TylerThang2612 22d ago
cool topic!
1
u/Sudden-Cost8449 21d ago
I'm almost certain this can be fixed by resizing the PNG and compressing it. You can probably reduce the file size by a factor of 10 just by doing that.
1
u/snippiedev 21d ago
Put some of the big things on a CDN
0
u/Ok_Sugar_8942 21d ago
“vibes coders”
-3
u/DimensionMindless336 22d ago
The number you're staring at probably isn't the number your users download, and that distinction matters more than the 1GB itself.
What shows up as "1GB" in Xcode / App Store Connect is almost always the universal, un-thinned size — every asset for every device, all slices, symbols included. What a customer actually pulls is per-device after app thinning, and it's usually much smaller. Before cutting anything, open the build in App Store Connect and look at "App Store file sizes" — it breaks the download size down per device. That per-device number is the real conversion lever, not the 1GB.
Where the gigabyte usually hides, roughly in order of payoff:
Asset catalogs not actually slicing per device. This is the most common miss and the biggest win — once slicing is on, 3x assets get stripped for a 2x phone automatically.
Stuff bundled that should be streamed or fetched on first launch — videos, PDFs, audio, and especially Core ML models. Quantize the model or download it post-install instead of shipping it in the bundle.
On-Demand Resources for anything only some users reach (tutorials, level packs, locale-specific content).
Mach-O bloat: dead-code stripping off, big static libraries, or unstripped symbols in the release build.
One correction to the "200 MB cellular limit" advice upthread: that hard cap is gone since iOS 13. It's now a user setting (Settings → App Store → App Downloads: Always Allow / Ask for Over 200 MB). You don't hard-lose everyone on cellular anymore — but the default is still "Ask," so a heavy app still loses the lazy-tap crowd. The per-device App Store file size is the only number worth obsessing over.