Okay, so today I’m gonna share my experience with figuring out iOS app sizes. It’s a bit of a rabbit hole, but I finally got a handle on it, so let’s dive in.

It all started when my app’s size ballooned. I mean, seriously, it went from a reasonable size to something outrageous. I thought, “There’s gotta be a way to slim this thing down!” So, the hunt began.
First thing I did was check the basics. In Xcode, I went to Build Phases. This is where you can see all the resources that are being bundled into your app. I carefully reviewed the Copy Bundle Resources phase. Turns out, I had some old, unused images and assets lurking there. I deleted those right away. Boom, a little bit of size reduction achieved.
Next up: asset optimization. Images are often the biggest culprits. I started using tools to compress them without losing too much quality. I experimented with different compression levels. Tools like ImageOptim are lifesavers for this. Just drag and drop your images, and it does the magic. Saw another decent chunk of size shaved off.
Then I looked at code. Maybe I had some unnecessarily large libraries. I started using CocoaPods and Carthage more carefully. I made sure I was only including the specific modules I needed from each library, not the whole thing. Turns out, some libraries had dependencies I didn’t even need! Cutting those out made a noticeable difference.
Another sneaky size hog? Localization files. If you support multiple languages, those language files can add up. I went through my project and removed any languages I wasn’t actively supporting. Streamlined that part, too.

But the real game-changer was App Thinning. It’s a feature Apple provides that lets you create different versions of your app optimized for specific devices. It only delivers the resources needed for that device. This can dramatically reduce the download size for users. I enabled Bitcode in my project, which is essential for App Thinning to work properly. To test it out, I used Xcode’s “Archive” feature and then exported the app for different device types.
Also, I started paying attention to build settings. I made sure I was using the optimal optimization level for release builds. Stuff like setting the “Optimization Level” to “Fastest, Smallest [-Os]” can make a difference. I also enabled “Strip Linked Product” to remove unnecessary debug symbols from the final build.
Finally, profiling the build. Xcode has Instruments, and it’s pretty handy. I used it to see where the biggest size contributors were in my app bundle. That helped me pinpoint which areas needed the most attention.
It was a lot of trial and error, but by going through each of these steps, I managed to significantly reduce my app’s size. It’s an ongoing process, but now I have a better understanding of what contributes to app size and how to keep it under control.
Key takeaways:

- Clean up unused assets.
- Optimize images like crazy.
- Be mindful of your library dependencies.
- Use App Thinning.
- Profile your builds.
Hope this helps someone else battling the dreaded app size issue! It’s a constant fight, but worth it.