This is because the App Store show you the complete size of the app, with all its resources and screenshots and icons. However when you download the app, this is the actual size of the app itself, without all the extra unnecessary resources (screenshots and description). Also, if you use App Thining, the app itself won't download all the resources for the specific device, what means that this again decreases the actual app size. Let's take the example app called SOEX. The actual app run on the iPhone will have 50mb size (including storyboard, code, and all resources). However, there are also 5mb of screenshots for the App Store and your @2x
and @3x
assets. This iPhone is using the @1x
assets. All those extra assets are 15mb. This brings the total uploaded file to apple to 70mb. This is also the amount that will be displayed on the iPhone's App Store, whereas the storage displayed in the settings will be 50mb only. Now, when you will switch to an iPad this will likely be even larger, as the storyboard is different for the iPad (assuming you have two storyboards rather than size classes and constraints).
So the iPad size will be 55mb, whereas the iPad App Store display will show you 75mb. Now to the third value, that is when you will check the size on your computer. Here it will likely be the biggest as it'll contain all the assets, both storyboards and all you code.
TL;DR
Because of all the resources for the different resolutions and sizes, the App Store displays a larger number than what you will actually download.
And to the question you asked about the updates. For this I'll take the example of my own app. On the App Store, it is 45.7mb. Once It's downloaded it only shows you that it's 25.6mb, as it has all of the unnecessary resources removed. The newest update was 46.7mb, which was just a bit bigger than the actual app store app. This was because we changed two screenshots and a few files. The moment you update your file, Apple downloads the complete thing again. Therefore if you changed major files and added more resources or code, the app update size will likely be equal or higher than the App Store size number. But once you download it, you'll see that the update merely increased my app's size by 18mb, not the 46.7mb that were shown on the update page. This is basically apple's weird way of displaying app sizes. So this is not a bug or problem from your side.
TL;DR 2
If you change a file, it redownloads the complete things, making the update size a lot bigger than the actual space that will be taken up on the device.
EDIT:
Apple posted an article about app sizes that may be interesting to you on their web page and you can find it here.
Hope that is clear and helps, Julian