As users of 8GB and 16GB iDevices can surely tell you, installed app sizes have been ballooning over the years. That's because an app's installer has to include all of the possible variations of executables and assets for different models of iPhones and iPads, like Retina and non-Retina graphics. Despite going unused, those extra assets take up precious space.
That's all changing in iOS 9. With App Thinning, developers will be able to take advantage of three different size-reducing approaches for their apps.
The first, called Slicing, allows developers to tag app resources for different CPUs, GPUs, and display resolutions. The App Store will then generate each device-specific variation. When the app is downloaded, the user will get the version of the app that's optimized for their particular device.
Then there's Bitcode, which isn't very different from Android's ART bytecode runtimes. Instead of uploading a compiled binary, devs can now upload apps in an "intermediate representation" format, which Apple will then turn into a proper device-specific executable on demand. This process lets Apple automatically apply compiler optimizations and potentially downsizes executables even further.
The final new optimization is called On-Demand Resources. The concept is simple: app developers can elect to leave some resources to be downloaded as needed from Apple's servers (say, game levels or in-app purchases.) Apps can then use these resources and mark them as released when they're no longer needed. iOS can then delete these released resources to free up space on the device. Apps built with on-demand resources can have a reduced download size, though the tradeoff is that users will need an active data connection to fetch the remotely stored assets. Nevertheless, it's an interesting feature, especially for larger games.