https://news.ycombinator.com/item?id=25376346
Uber is a global app, so the other 9/10s of the code is for all the features and functionality you'll never see outside your region since there is currently no way to split up binaries by region.
It's like graffiti.. the app is so big already, that the devs don't give a damn about optimizing.. why bother if they are just A/B-feature tests? 30mb for some unoptimized screens for example
If your app is serving hundreds of cities with specific per-city customizations and all code and assets are in a single binary, life gets tough.
The localization files (50MB) -> All the strings files are double the size (unpacked), because of useless comments. There's 25MB already.
In the assets catalog -> half an MB for an upscaled (!) visa card. Other images where jpgs of heif are a better choice. probably in total 10-20 mb.
Strip all ICC/Gamma from the PNGS -> another 10mb.
pngcrush the images -> about 40%
And then of course the binary itself which is probably full of unused information.
Especially with A/B tests, because they are just temporarily
https://www.infoq.com/news/2020/04/uber-piranha-unreachable-...
I also know it first-hand as just last week I've been doing a mega-cleanup of years-old A/B test flags in our own code.
Few app developers have the time/bandwidth to do these things and it would be a very inefficient use of resources to have everyone do it over and over again.
The image optimizations, precalculation should be done be apple. But the dev could use a lossy format for certain files. That’s up to the dev, not Apple.
Maybe it’s because I used to write some j2me games. Or some games when Apple only allowed 15mb I think. I had to optimize the hell out of my assets. Still I think I’d Lucy’s that certain apps are almost half a gb in size