Processed file sizes for Build exceed the 100 MB app file limit

I'm seeing an issue after submission to the app store with Xcode 7 and iOS 9.


My app's always been ~70MB after submission, and the exported IPA of the latest build is sitting at 67MB. After submission to iTunes connect, I'm getting a warning next to the build number saying that the processed file size exceeds 100 MB. I'm not using bitcode and I can't think of anything on my end that would affect the size of the submission now.


Is anyone else experiencing this? Any suggestions?


Thanks

Accepted Reply

The size of the IPA produced by exporting from Xcode 7 is not representative of the IPA size that will be shipped down to devices when you app is installed, and the size increase over an Xcode 6 build is not something to worry about. Unfortunately, the statistics shown to you by TestFlight aren’t representative of the app size when installed on a device. You should file a bug report at http://bugreport.apple.com to get more meaningful app size statistics.


What’s inflated the IPA size after building with Xcode 7? Bitcode and the Swift 2 libraries.


When apps containing Swift 2 code are built, Swift 2 frameworks are bundled with the final app, including libswiftCore, and this library contains all of iOS device architectures — armv7, armv7s, and arm64. Further, the Swift libraries include Bitcode, even if your app specifically turns Bitcode off. If the app contains a watchOS 2 app, a second libswiftCore framework is included in the watch app bundle with armv7k architecture and the Bitcode.


Objective-C apps that have Bitcode turned on (optional for iOS, mandatory for watchOS 2) have a smaller version of the same issue. While these apps don’t embed the Swift libraries, Bitcode will be in the binary, increasing the size of the IPA over what the user will actually download.


Apps containing Bitcode will have the Bitcode stripped out before the app is shipped down an iOS device. Apps using Swift 2 with Bitcode off may find it inconvenient that Bitcode is still included in the Swift frameworks, but this is never sent to an end user’s device. iOS 8 and older OS versions will receive a universal app with all resources and all architectures, but with Bitcode stripped out. The same is true for iOS 9 devices, with App Thinning additionally removing resources and architectures that the target device will never use.


Apps with an pre-submission IPA size slightly above the cellular download limit will probably remain under the cellular download limit once the Bitcode stripping occurs, but the exact size reduction is different for every app, depending on what frameworks are included and what additional content is removed by App Thinning.


Further complicating questions on the end size of an app is that apps downloaded from the App Store have their binaries encrypted, which reduces the amount the binary can be compressed. Q&A 1795 explains this a little bit more, linked below.


While there is nothing that can be done to shrink the binary size with these circumstances, please consult the following for reducing the size of your app in other ways:

Q&A 1779: Reducing Download Size for iOS App Updates

Q&A 1795: Reducing the size of my App

On Demand Resources

Replies

Yes, we are having the same issue here. Previously we were at 84MB, now we are at 109MB (iOS8) and 87MB (iOS9). The difference between OS's would presumably be App Slicing. We have had no luck thus far finding a solution.

I'm having the same problem. We were at 82.5MB before, and now TestFlight is reporting 111MB on my iPhone 6+ running iOS 9, and 199MB on an iPhone 6 running iOS 8.


Haven't found any solution. But I do notice that assets.car is now 101.5MB in the xcarchive, it used to be 47.3MB.

Same here. Was at 30mb and now ballooned to over 100.

Anyone find out any answers for this issue? We are having same problem. thanks

The size of the IPA produced by exporting from Xcode 7 is not representative of the IPA size that will be shipped down to devices when you app is installed, and the size increase over an Xcode 6 build is not something to worry about. Unfortunately, the statistics shown to you by TestFlight aren’t representative of the app size when installed on a device. You should file a bug report at http://bugreport.apple.com to get more meaningful app size statistics.


What’s inflated the IPA size after building with Xcode 7? Bitcode and the Swift 2 libraries.


When apps containing Swift 2 code are built, Swift 2 frameworks are bundled with the final app, including libswiftCore, and this library contains all of iOS device architectures — armv7, armv7s, and arm64. Further, the Swift libraries include Bitcode, even if your app specifically turns Bitcode off. If the app contains a watchOS 2 app, a second libswiftCore framework is included in the watch app bundle with armv7k architecture and the Bitcode.


Objective-C apps that have Bitcode turned on (optional for iOS, mandatory for watchOS 2) have a smaller version of the same issue. While these apps don’t embed the Swift libraries, Bitcode will be in the binary, increasing the size of the IPA over what the user will actually download.


Apps containing Bitcode will have the Bitcode stripped out before the app is shipped down an iOS device. Apps using Swift 2 with Bitcode off may find it inconvenient that Bitcode is still included in the Swift frameworks, but this is never sent to an end user’s device. iOS 8 and older OS versions will receive a universal app with all resources and all architectures, but with Bitcode stripped out. The same is true for iOS 9 devices, with App Thinning additionally removing resources and architectures that the target device will never use.


Apps with an pre-submission IPA size slightly above the cellular download limit will probably remain under the cellular download limit once the Bitcode stripping occurs, but the exact size reduction is different for every app, depending on what frameworks are included and what additional content is removed by App Thinning.


Further complicating questions on the end size of an app is that apps downloaded from the App Store have their binaries encrypted, which reduces the amount the binary can be compressed. Q&A 1795 explains this a little bit more, linked below.


While there is nothing that can be done to shrink the binary size with these circumstances, please consult the following for reducing the size of your app in other ways:

Q&A 1779: Reducing Download Size for iOS App Updates

Q&A 1795: Reducing the size of my App

On Demand Resources

"Apps with an pre-submission IPA size slightly above the cellular download limit will probably remain under the cellular download limit once the Bitcode stripping occurs, but the exact size reduction is different for every app, depending on what frameworks are included and what additional content is removed by App Thinning."


Is it possible to make estimates? We have an ironclad rule that our apps should be below the cellular download limit but iTunesConnect's 100MB limit warning is not really helping our cause..


Filed as rdar://22753621

Just to add more context to this, we just released our game a few hours ago and so we have no seen this whole process through start to finish. Let me throw down some numbers in the hope that it will be helpful to other devs!


As mentioned above, on Testflight, we were getting reports of 87MB (iOS9) and 107MB (iOS8) respectively. Previously the build was 87MB under XCode 6. The build size as reported in the Build Information on iTunes Connect also said 87MB.


So based on the information we recieved from edford, we proceeded with the release. When selecting the build for submission, we would also get the "This app exceeds the 100MB limit" warning during the process, and proceeded to submit anyway.


Now that the game is released, we are seeing a size on the store of 86.6MB (insert huge sigh of relief here) on iOS8 and 9, and a build size of 83MB on an iOS7 device.


Hope this is helpful for anyone else who has been stressing about file size!

Hey thanks for the info I just have one question. I am using the testflight app and my friend has downloaded the prerelease of the app and all the picture that were there and are there when I run the app in Xcode are no longer the when he downloads it from test flight it's just a bunch of X's. So I'm assuming this is because the test flight won't download all the files and I'm also assuming that when my update is released to the App Store the images will be restored ?

We have the similar problem for our game's new version. It was ~83 MB in version 1.0 (in App Store) and I only fixed some little bugs, updated AdColony SDK and added UnityAds. I think these changes shouldn't increase size to ~166 MB! We're developing our game in Unity, so I don't know Xcode very well and I really don't know what is wrong. Maybe this problem because of new AC SDK, because in the release notes there is a "SDK is compiled with bitcode" item.


Our Testflight shows the game is only 63.5 MB, my development build on the iPhone hasn't changed much. I can't tell anything about the Xcode archive/ipa file size at the moment, because my rMBP is just broken down and I don't have the latest backup -_- but, in iTunesConnect, our build size is seems correct (~94 MB for 1.0.1 and ~91 MB for 1.0). And, appshopper.com is showing our app size is ~84MB, but I don't know how they calculated this, because in App Store it's ~166 MB. Actually, I am shocked when I see our game's size for new version.


Can I go back to Xcode 6? Or this problem fixed in Xcode 7.1? Or what should I do? By the way, we'll probably remove the AdColony & UnityAds for the future version, can this solve the problem by itself?


---

I checked the archive sizes for 1.0 and 1.0.1 and there is only ~5 MB difference. And, when I look to the size in iTunes Preview on a web browser, it shows ~88 MB.

Hi edford,


Thank you. Would you be so kind to clear for me one more detail? E.g. we have an app with 150MB bitcode and 100MB other data. According to your information 150MB of bitcode will be stripped out before the app is shipped down an iOS device. So, my question is - what size of the app will be checked for 200MB limit provided by tvOS, 250MB or 100MB?


Thank you 🙂

Hi Edford,


My iOS app does not uses Swift and is not targeted for WatchOs and no bit code is disabled.

The ipa size that is created out of XCode 7 is 30mb. But when its uploaded to testflight, the size is shown 58 mb in testflight app.

Its giving a completely wrong size information to stakeholders who will be accessing the build.
Can you please explain the following: a) Why this behavior is happening in testflight. ?

b) Will the same size of 58 be shown for users in Appstore or the 30mb ipa size which was uploaded to Tesflight. ?

c) How can i get a the correct information from testflight and appstore on app size, to convey the same to stake holders. ?