crazygringo
4 days ago
> For most of that period, the size of the Gmail app hovered around 12 MB, with a sudden jump to more than 200 MB near the start of 2017... The Gmail app, on the App Store, is currently 760.7 MB in size.
With charts:
https://www.axios.com/2017/12/15/the-top-iphone-apps-are-tak...
I had no idea common apps used to be just 10-30 MB. But are now hundreds of MB.
Something like Gmail doesn't have massive hi-resolution bitmap graphics. Since the article doesn't give any answer, I'm assuming it's a hand-wavy "frameworks", but that's an enormous amount of compiled code.
Aachen
4 days ago
> I had no idea common apps used to be just 10-30 MB.
More like a few dozen kilobytes to a handful of megabytes. If you look in F-Droid you can find some good old apps where graphics are either small or it uses the default styles for buttons and the like
Looking at a tiny utility app I made 6 years ago, it's 9KB, most of which will be the default things the compiler includes
koyote
3 days ago
I recently made a tiny utlity app with a single screen, one dropdown and a few lines of text (it makes a single API call to populate the text).
According to my phone it's 25MB.
There's no assets, not even an app icon.
I have no idea what would be taking up more than a few hundred kb, let alone 25MB.
Tox46
3 days ago
There are ways to analyze the content of your app so you know exactly what's taking all the space.
Tools can vary depending on what language you used. For example i wrote a small app using flutter and i used the flutter's app size tool.
abareplace
2 days ago
Is it for iOS? Then, it could be the Swift runtime library.
marcosdumay
3 days ago
Maybe your compiler isn't pruning dead code?
saidinesh5
3 days ago
I think it could be all the compat /support libraries that try to give you the same API across different Android versions.
throwaway81523
3 days ago
I remember hearing that even a trivial React Native app is around 100MB on Android.
marcosdumay
3 days ago
If you use Electron, yes, any application starts from around 100MB.
But there are alternatives that reuse the OS's libraries nowadays.
presentation
3 days ago
React Native doesn’t use Electron
efskap
3 days ago
Why Electron? React Native doesn't even use HTML.
emchammer
3 days ago
How does a web application reuse browser system-native libraries?
oxidant
3 days ago
Electron ships a version of Chrome. Other frameworks like Tauri use the device's webview.
marcosdumay
3 days ago
The entire discussion is about native applications, not web.
paulddraper
4 days ago
> a few dozen kilobytes
A "hello world" Android starts at ~5MB.
It is possible to make it smaller if choosing some non-default different tools.
rabf
3 days ago
paulddraper
2 days ago
> non-default different tools
The “default” recommendation is clearly Android Studio plus Kotlin/Java.
Other tools are smaller.
vbezhenar
4 days ago
Hello world Android app includes a lot of dependencies like compat libs, constraint layout, kotlin runtime. These are not essential and can be removed.
pjmlp
3 days ago
I am quite sure that isn't using the plain Android APIs, and has a bunch of needless libraries.
Use plain Java, regular Android views, handle yourself the ifdefs for Android versions, and the 5 MB won't be there.
binaryturtle
4 days ago
Outch… and I though an ~8KB "Hello, World!" here on my rusty Mac is HUGE already.
Aachen
3 days ago
Idk what to tell you but my "hello world" + a few dozen lines of functionality are 9.6KB. Haven't done anything special to shave things off
jorams
4 days ago
> I had no idea common apps used to be just 10-30 MB. But are now hundreds of MB.
This is Android, but: 13+ years ago I had an HTC Desire. I was really struggling with internal storage space, regularly uninstalling and replacing apps just to be able to update others. Eventually I moved to custom ROMs just because they allowed some apps to be moved to the SD card.
I remember the biggest problem was WhatsApp, which was somehow over 7MB while the average was closer to 1MB.
On my current phone WhatsApp is 231MB. It's still pretty high up in the rankings, but doesn't stand out, and barely any apps are below that then-huge 7MB.
hn8726
4 days ago
On Android most apps started bundling androidx/jetpack compat libraries that help deal with various API versions, and generally make the development much, _much_ easier. These days apps will also bundle the entire new Android UI framework (Compose) while in the past all the UI code was using framework classes.
Other than that, some popular and useful libraries will bundle native libs (for example for sql), and some ad/analytics/corporate SDKs will use native libs to share code between platforms and for obfuscation. These corporate SDKs (like Zendesk) will also notoriously break Android minification tools, because why bother
Dylan16807
3 days ago
One of the struggles on my first android phone was fitting updates for the multiple google docs apps since they were all getting bigger and didn't share their redundant data. That phone had about 150MB for apps.
It's sad the laziness that happens when there's no pushback. The devs gain barely anything from leaving things this bloated, but barely anything isn't zero so now a million people have to deal with big files and wasted RAM.
kstrauser
4 days ago
My back-of-my-head benchmark is still my old Amiga. Here's[0] a full-blown GUI email app that was perfectly nice to use. The entire package, complete with all its custom GUI classes and 3 sets of icons, took 1.4MB uncompressed.
I know the thousand legitimate reasons why modern apps are larger. It's not all bloat and inefficiency, either, except in the harshest sense that old apps tended to use byte-optimized data structures like linked lists instead of faster, but less space-efficient structures like hash maps. They have to deal with higher resolutions, although the command to draw an empty white 320x200 square on the screen should be approximately the same size as to draw a 2000x1500 one. And yet, wow, it doesn't seem like it should need to be that much bigger.
jeroenhd
4 days ago
Thunderbird for Android supports pretty much everything Gmail supports and probably more, but it's "only" 40MiB in size. Even on Android, that's a 3x size reduction.
I don't know why iOS apps in general are so much larger than Android apps (that doesn't just seem to be a Google problem) but you certainly don't need the full size of the Gmail app.
pmontra
3 days ago
More than 3x: GMail is 194 MB on my Android phone and the old K9 (which Thunderbird built upon) is 10.60 MB.
tentacleuno
3 days ago
> I don't know why iOS apps in general are so much larger than Android apps [...]
Rough guess: It probably wouldn't be this dramatic of an increase, but could it be something to do with iOS disallowing Just-in-Time compilation, and forcing Ahead-of-Time? I've always wondered.
zffr
4 days ago
It’s probably frameworks + localized assets.
With dynamically linked frameworks you bear the cost of the entire framework (and its dependencies) even if you just use a few functions.
iOS apps also need to include all localized assets in each app bundle.
amluto
3 days ago
I don’t think this fully explains it. In the nineties you could build a whole application using a toolkit like MFC, and you could ship the entire .dll, which bundled a whole bunch of (low-res, remarkably tasteless even for the time) bitmapped UI assets, and the resulting package didn’t hold a candle to modern bloat. Nor could it: you wanted that self-extracting installer (this predated MSI!) to be reasonable to download on a 56k modem, and even if you used a CD, you wanted room for something else on that CD.
Of course, there were multi-hundred-MB software packages in that era, but they were complex, multifunctional, and highly capable. And IIRC all of Microsoft Office (RIP!) except for some rarely used extras still managed to fit in one CD for a long time.
rerdavies
3 days ago
I'm wondering what the source for these apps were. Google Store downloads strip unnecessary localized assets at download time. This used to be a BIG deal back when icons were bitmaps; but compiled binaries do provide COMPLETE pre-rendered sets of bitmap icons if your downlevel minimum version (Android 5.0? Android 6.0?) extends that far. Which are then stripped whenever you download to modern phone. Assuming that you have SVG replacements for all legacy bitmap icons. Perhaps Gmail does not. So if there are multiple localizations, that would suggest that either the user is measuring the pre-installed app (which almost immediately upgraded and is therefore effectively replaced), or has obtained the APKs from a different source.
The publicly available email app in the Android sources is NOT gmail (and is therefore likely to be unloved and uncared for, and probaly will contain massive blobs of bitmap icons. So if it was that...
Any native code ALSO bloats compiled binary size dramatically (since binaries include code compiled for each processor you have selected when you performed the native build). Unnecessary binary blobs are stripped by the Play Store when you download. It is conceivable that gmail carries ancient crusty pieces of native code, I suppose, given its long heritage.
And also includes pre-compile maps to speed up startup. Very strange process. Apparently, the Google Play Store profiles the startup of the first 20-odd users who download your app, and then transmit the pre-compile map to all subsequent downloads. I'm not sure whether apps are pre-jitted at install time or whether the pre-jitted code is downloaded from the Play Store.(Play Store does tells you they are going to do it when you upload, and -- sure enough -- load time "magically" improves by a significant amount shortly after you push the binary to production. I don't honestly know whether pre-jitting has taken place before first load. (And whether that code shows up as cache space or app size).
Compat frameworks, on the other hand.... absolutely yes! I'm not sure that native Android framework code EVER gets executed on a modern app, to be honest. Almost all compat layers, and extensions, I think.
itopaloglu83
3 days ago
That’s a lot, a lot, of compiled code and text, especially when you consider some of it is likely compressed.
Also, afaik, it is possible to ship an iOS app in a way certain modules can be downloaded as needed.
It would be nice if Google paid some respect to user devices, or at least go back to “don’t be evil”
pjmlp
3 days ago
Which is why on iDevices static libraries should be used instead, as the linker can throw away the extra stuff.
Likewise on Android, on the NDK, and R8/D8 take care of removing all the extra stuff as well.
Sandboxed applications don't make sense to have dynamic linking beyond what is required by some OS workflows, e.g. loading native code into ART.
ksec
3 days ago
>iOS apps also need to include all localized assets in each app bundle.
Is this a hard requirement? I use two languages or at best three. The other 100 language don't matter to me. Why do I have to waste space on my smartphone. This adds up if I have hundreds of apps.
Daedren
3 days ago
It is the default.
You could get localizations OTA, but that's engineering you need to do to make that happen.. or a product you purchase, as there's various localization managers offering these options in their software.
renrutal
4 days ago
> a sudden jump to more than 200 MB near the start of 2017
Google Meet was launched in March 2017.
londons_explore
4 days ago
For a while there were app size limits for downloading over mobile data. That meant that if your app was too big you'd have terrible growth metrics.
recursivecaveat
2 days ago
I remember Uber hit this pretty hard: https://news.ycombinator.com/item?id=26277501 & https://news.ycombinator.com/item?id=25376346 For them though the mobile-data thing was extra important since a first-time Uber user is likely to not be at home and needs the app in order to get home.
orthoxerox
4 days ago
I remember when Windows 95 was around 10-30 MB, ten whole diskettes or so.
paulddraper
4 days ago
Now I can't even install Ubuntu without 4 GiB+
r14c
3 days ago
Proper unicode font support is like 1.2GiB (noto, but I haven't found any complete unicode font collections that are significantly smaller). There's bloat for sure, but supporting universal text is one that I think is not a waste of space.
syberant
3 days ago
Unsure if this is useful to you but have you heard about GNU Unifont? It’s not as nice and comes with some asterisks but damn it’s very compact.
I first read about it via this blog post: https://shkspr.mobi/blog/2019/04/banish-the-%ef%bf%bd-with-u...
WindyMiller
3 days ago
To be fair it wouldn't really be doing its job if it didn't come with any asterisks
1313ed01
3 days ago
Maybe not proper support, but when I tried NetBSD recently my entire installation was around 1.5 GB on disk and seemed to handle Unicode well enough for me (for languages I care about). Not doubting some more packages would be needed to support every language, but happy everything wasn't installed by default.
r14c
3 days ago
Ye by proper i mean being able to render unicode in any language without tofu. I get that not everyone needs that, but its a reasonable thing to have on your disk in 2025.
Gibbon1
3 days ago
For English capitalization is a trivial problem. I think for Hungarian or something similar the rule set is like 6mb.
yieldcrv
4 days ago
When I doing mobile app development a decade ago, I found that many interviewers and clients were evaluating my experience more like an artist's portfolio, alongside a couple of arbitrary metrics to determine app scope
One of those arbitrary metrics was bundle size, how many megabytes on the app store was the app. The bigger the better and more serious it was.
At the time I was knee deep in optimizations, using SVGs, doing compression, even bitshifting, to make apps smaller for the companies I worked for. Reducing how many people would be bounced from downloading or installing the app.
And yet, that impressive 12MB app from a venture backed company with hundreds of thousands of users was getting me penalized for taking up so little space
I literally started putting dummy files in the app bundles and it worked for my professional goals. All kinds of premium marketing has similar fictions in them to convey value
so I can emphasize how its the difference between $50/hr upwork gigs inconsistently, and $500,000/yr at Google
ksherlock
4 days ago
Back in the time of 3.5" demo disks, I know one group that filled up their disk image with random numbers so it wouldn't compress so it would look bigger and more impressive in file listings.
andy99
4 days ago
This seems to be true for writing code generally. Why do something simple when you can show off how complex you can make a project?
I keep seeing tools that should be a for loop inside a script that instead are a sprawling project with all sorts of different files and class hierarchies and abstractions...
kjkjadksj
4 days ago
Having a sub 5mb app is still the strongest quality signal there is for ios. A shame you can’t sort and filter results by size.
nine_k
3 days ago
As long as you don't need a lot of hi-res graphics. One of the no-frills icon themes installed on my Linux laptop (from which I'm typing) is 170M, just because it has a pack of icons rendered for each of the 8, 16, 18, 24, 32, 48, and 64 pixel sizes.
(And no, vector icons are not equally useful in this whole range of resolutions; you need to lower the level of detail for small resolutions to avoid pixel sludge, and increase the level of detail for high resolutions to avoid the barren look. Still, say, 3 versions in SVG format could be sufficient.)
CyberDildonics
3 days ago
You don't need "hi-res graphics" in an app.
oblio
3 days ago
Why?
joseda-hg
3 days ago
Small screen, lots of system components that should get drawn dynamically, etc
A bit reductionist, but I get it, if it were a priority you could do lots with a hundredth the space
zimpenfish
2 days ago
Small screen (iPhone) that could also be a medium screen (iPad) or even a large screen (Macbook), no?
allthetime
3 days ago
If your app is 5mb to download but then needs to download 100mb of content your app is 105mb.
kjkjadksj
3 days ago
I have a couple that are honest sub 5mb apps. Some of my favorite apps on my phone. Limited featureset that does what it says on the tin. Loads instantly. Hardly uses battery at all. I wish everything was like this.
tarentel
4 days ago
Part of it is resolution. The icons and such in apps are much larger now than they were in 2013. Besides that I mentioned this in another thread but rarely will a team clean up after itself. There's probably tons of dead code and what not in a lot of these larger apps. I know all the ones I've worked in had a lot of bloat just from years of work. Some feature gets added 5 years ago by a team that no longer exists, it was turned off and no longer used but who is going to remove it?
Besides that, there's just a lot of garbage that gets added by various people with different interests. An unoptimized version of the app I'm currently working on has a ~15mb binary, the core app not including all the "extras" people have asked for. It has about 75mb of assets, probably 10-15% are unused but I have no idea. The download size is about 400mb.
BugsJustFindMe
4 days ago
> An unoptimized version of the app I'm currently working on has a ~15mb binary, the core app not including all the "extras" people have asked for. It has about 75mb of assets, probably 10-15% are unused but I have no idea. The download size is about 400mb.
What are the other 310?
tarentel
4 days ago
Frameworks from other companies. A lot of it is analytics/tracking, some payment processing, etc. There are a few open source libraries we're using as well but those probably are <5mb if I had to guess although I never checked.
Again, a lot of these companies have also been around so if my app has a ton of bloat from years of work, we're bringing in frameworks from other companies who have been around for years as well and probably have a similar amount of crap in their code. Plus they probably want to track everything we're doing so they're bringing in their own third party libraries. It's kind of ridiculous but that's where we're at.
Bigger companies won't have as many third party libraries as they can afford to do it in house but they're still bringing in similar sized libraries to do the same things.
Zenst
4 days ago
Imagine, it's not just making sure your code is secure, but your also counting on all those libraries's being secure. Let alone all these frameworks as you say - payment, advertising, analytics... You could have the most secure code ever, but when it is just one link in a chain outside your control, best not overthink it or you won't sleep.
You can see why bug bounties get rewarded well. Though mindful, money is not what drives everyone. Then there are the greedy, in which such exploits value on the black market can be higher. Not forgetting government agencies level.
I wonder which email client will break the 1GB mark, and when we will see a resurgence in reducing bloat. I'm sure that phase will come, did for Microsoft once.
BugsJustFindMe
3 days ago
> A lot of it is analytics/tracking
Woof. This is just so wild if one ever stops to think about it. ~300mb of tracking for a single app is bigger than the entire hard drive of a fully internet-capable desktop computer in the mid '90s.
vbezhenar
4 days ago
Icons should use vector format.
tarentel
3 days ago
Not sure how that would help. SVGs aren't natively handled on iOS. They get rasterized during build time and that's what gets shipped with an app.
throw10920
3 days ago
Huh, is there a requirement that they be rasterized at build time? If I had a choice, I'd rather ship the SVGs in the bundle alongside a renderer like ThorVG and render at runtime. The renders could even be cached if the rendering itself was expensive.
fingerlocks
3 days ago
If you’re including these assets as UI elements, they would be rasterized anyway and copied to a GPU bound buffer for the frame blit. Doing so at compile time increases runtime performance.
You can of course override this behavior and redraw your vector every 8.3 ms if you want, but I promise you that this is not faster. For sparse pyramid-tiled vector images like Google/Apple maps, this is a two step process using the latter method followed by the former.
beloch
3 days ago
Historically, raster graphics won out because they used less resources. Perhaps that's changed. If so, it would make sense for various OS's to start working on native support. Irix did it in the 90's. It can be done now.
andrekandre
3 days ago
we've been able to "preserve vector data" with pdf and svg image resources on ios for a long while now... compile-time rasterization is the default though...
user
3 days ago
BobbyTables2
3 days ago
We once ran Windows 95 with Encarta in about the same amount of disk space.
We crossed lunacy long ago.
grugagag
3 days ago
I remember my first PC had a HD of around 20Mb. It was vast at the time, I had so much software to keep me busy for a while that I I felt overwhelmed. Amongst those there was Windows 3.0, taking probably a whopping 3mb
thedeadgamer
3 days ago
Whoa, Encarta was such a great thing back in the day for me. Brought back memories.
I agree, that we crossed lunacy long ago, and that LLMs have not helped in the slightest.
vrighter
3 days ago
My first PC (my parents splurged on a high-end machine (for the time, of course) only had 8MiB of memory and a 1 GiB HDD. It ran windows 95 and encarta just fine.
amelius
4 days ago
> I had no idea common apps used to be just 10-30 MB. But are now hundreds of MB.
This is one of the reasons why these apps grow: because the user doesn't notice!
cyanydeez
3 days ago
Guys, do you think AI is like newage bloatware? Like, it's gigabytes of just things you're never going to need, and now ram prices are skyrocketing because they have no idea how to make it efficient.
In fact, they state the oppposite: To really make it go, they need petawatts of energy and compute. It's like Windows incarnate.
FpUser
3 days ago
>"I had no idea common apps used to be just 10-30 MB"
I wrote native Windows desktop application 10 years ago that still brings me some money. It has boatload of functionality and the size is 12MB. Competitors have similar app written in .NET. The install is about 1GB.
Marsymars
3 days ago
.NET apps are relatively small until/unless you start pulling in many/large dependencies.
marcosdumay
3 days ago
> I had no idea common apps used to be just 10-30 MB
Phones used to have 4GB of flash memory... Some had 2GB.
wakawaka28
3 days ago
There are full-featured operating systems that fit on like one or a few floppy disks. Standard Linux distros would fit on a standard 600-700 MB CD, with some made for mini CDs being much smaller.
SirMaster
4 days ago
Hmm, mine is currently 673MB on iOS 26.