Live data from Hacker News

How Uber Deals with Large iOS App Size

eng.uber.com

11–20 of 215 posts

Re: How Uber Deals with Large iOS App Size

#11

It's maybe a naive question, but from my point of view I don't understand why it's even a problem. Why is the Uber app so big ?

This article is bogus. They spend a whole bunch of time benchmarking build sizes, nothing about why they need so much code in an iOS app to begin with.

Apple has dropped limits for large app downloads on cellular. They now put up a dialog to tell the user how big the download is and if they wish to defer to a WiFi download.

I checked the size of the Uber app and it's about 300MB. Uber Driver is 232MB and Uber Eats is 228MB.

Re: How Uber Deals with Large iOS App Size

#13

Can someone help me understand this? They blame the source of the large bundle size on: > The choice of Swift as our primary programming language, our fast-paced development environment and feature additions, layered software and its dependencies, and statically linked platform libraries result in large app binaries but can somebody familiar with iOS development explain what makes app bundles so big? Actual CPU instr…

I'm not very familiar with iOS dev, but I'd suspect a lot of dependencies, yes.

Also, the Uber app has a LOT more features than you would expect at a glance, due to extensive customization of the experience (i.e. feature flagging) along many vectors, and so it wouldn't surprise me at all if this ends up adding to a lot of code.

Edit: Linked post from sibling commenter bhupy outlines this in detail.

Re: How Uber Deals with Large iOS App Size

#14

328.9 MB I'm sure it could easily be 1/10 of that while keeping all features important to the user.

Important to a user in 1 region/country.

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.

Re: How Uber Deals with Large iOS App Size

#15

328.9 MB I'm sure it could easily be 1/10 of that while keeping all features important to the user.

Important to a user in 1 region/country. 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.

328 mb more than a complete OS. No doubt they can EASILY trim 30-60%. Asset optimization, stripping SDK libraries and you're done.

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

Re: How Uber Deals with Large iOS App Size

#16
> While power law and fractal patterns have revealed themselves in several physical, biological, and man-made phenomena, to our knowledge we are the first to identify their presence in machine-code sequences in computer executable code. Presumably, machine code is a human expression of instructions to a computer and it is well established that all human languages show a power-law in the frequency of the words.

Made me chuckle. Maybe the authors should look at getting an ACM subscription.

[https://dl.acm.org/doi/pdf/10.1145/1391984.1391986]

Re: How Uber Deals with Large iOS App Size

#17
post #7

An old (but fantastic) comment from the previous discussion about Uber's app size that addresses why the Uber app is so big: https://news.ycombinator.com/item?id=25376346

The summary of that comment is "we have to include a ton of stuff that will never be relevant to most users like payments APIs that only work in India."

This is why some global apps have different apps for different countries. It's a trade off. Would you rather have a single fat Uber app, or have to download Uber India when you arrive there?

Re: How Uber Deals with Large iOS App Size

#18
post #17
post #7

An old (but fantastic) comment from the previous discussion about Uber's app size that addresses why the Uber app is so big: https://news.ycombinator.com/item?id=25376346

The summary of that comment is "we have to include a ton of stuff that will never be relevant to most users like payments APIs that only work in India." This is why some global apps have different apps for different countries. It's a trade off. Would you rather have a single fat Uber app, or have to download Uber India when you arrive there?

> This is why some global apps have different apps for different countries

Do you have some examples? Genuinely curious. To my knowledge, most of the major FAANG apps are single-binary.

Re: How Uber Deals with Large iOS App Size

#19
post #10

Can someone help me understand this? They blame the source of the large bundle size on: > The choice of Swift as our primary programming language, our fast-paced development environment and feature additions, layered software and its dependencies, and statically linked platform libraries result in large app binaries but can somebody familiar with iOS development explain what makes app bundles so big? Actual CPU instr…

I'd say this is the most comprehensive breakdown: https://news.ycombinator.com/item?id=25376346

Let's say there are a hundred screens in the app and the app is 300mb. Does it really take 3mb of source code, about 3/4 of a bible, to render one screen?

(I do understand that source code isn't what ships in the binary, but for the sake argument let's say they're 1:1 in size.)

Re: How Uber Deals with Large iOS App Size

#20

It has... a few million ... lines of code? What? Linux has 30 million of C! I'm speechless. I cannot fathom how & why.

Cannot fathom why LOC is a metric? Me neither. Lots of stuff has millions of lines of code in various languages with wide ranging feature-sets and functionality. LOC has near zero meaning across the language/project boundary.
Post reply on HN