Same app version but different size on iPhones on TestFlight
Solution 1:
Apple servers are able to re-pack your application. For each device Apple determines which resources will be actually used. They prepare package for the given device (for example only images with correct scale for given device will be included in package). Also, if bitcode option is enabled, they are able to re-compile your app in order to provide optimized binary for each device. All of the above might change the size of your application.
A universal
.ipa
is a compressed app bundle that contains all of the resources to run the app on any device. Bitcode has been recompiled, and additional resources needed by the App Store, such as .dSYM files and On Demand Resources, are removed. For App Store apps, this .ipa is downloaded to devices running iOS 8 or earlier.A thinned
.ipa
is a compressed app bundle that contains only the resources needed to run the app on a specific device. Bitcode has been recompiled, and additional resources needed by the App Store, such as .dSYM files and On Demand Resources, are removed. For App Store apps, this .ipa is downloaded to devices running iOS 9 or later. source
You can check the size of the executable for each build in app section of iTunesConnect. Just enter Activity-> Click your most recent build ->App Store File Sizes.
Solution 2:
Two things comes in mind.
The first is that those 2 phones are using different architecture. iPhone 7 vs iPhone 4S for example. One uses 64 bit while the other doesn't.
Another possible solution would be that there's a different TestFlight version on each phone and the calculation of the size was changes some where between those version.