It has to do with App Thinning. Basically decreasing the size that your app takes up on a users device. It does this by only installing resources the device needs. For instance if a device doesn't support @3x than all it needs are @2x images. If a device isn't running 64 bit than all it needs is 32 bit code. > Xcode introduces support for App Thinning: three complementary > technologies which deliver an optimized installation automatically. > > Bitcode. Archive for submission to the App Store in an intermediate > representation, which is compiled to the executable for installation > on each device. (18168642) Xcode 7 has a ENABLE_BITCODE option to > embed bitcode in apps, app extensions, and frameworks. The option is > turned on by default for iOS and is mandatory for watchOS projects > submitted to the store. > > When bitcode is enabled for a target, all the objects, static > libraries and user frameworks used when linking that target must > contain bitcode. Otherwise, an error or a warning will be issued by > the linker. (Note: missing bitcode is currently a warning for iOS, but > it will become an error in an upcoming beta release of Xcode 7.) > ENABLE_BITCODE should be consistently turned on for all the targets. > If you use a library or framework provided by a third party, please > contact the vendor for an updated version which contains bitcode. . > The App Store will create and deliver different variants based on the > devices your app supports. **Image resources are sliced according to > their resolution and device family.** GPU resources are sliced according > to device capabilities. When the user installs an app, a variant for > the user’s device is downloaded and installed.