Downloading an update now moves substantially more data than it did a decade ago, even when the visible changes are small. The growth comes from packaging rather than from features.

One package serves many device variants

A single build often has to run on several processor architectures and a wide spread of screen densities, so the package carries alternatives that a given device will never use.

Splitting downloads by device removes much of that weight, but it requires the distribution platform to assemble a package per device rather than serve one file.

Where that infrastructure is absent, everyone receives everything, and the download reflects the full range of hardware the developer chose to support.

Frameworks are bundled rather than shared

Applications increasingly ship the libraries they depend on instead of relying on the ones already present on the system. That guarantees behaviour but duplicates code across every installed app.

The alternative, shared system libraries, has a long history of breaking applications when a dependency changes underneath them without warning.

Developers chose predictability over size, and each app now carries its own copy of machinery that several other apps are also carrying.

Assets grew faster than code

Executable code is a modest part of most packages. Images, fonts, sounds, translations and machine learning models make up the bulk of what is transferred.

Higher-resolution displays multiply image assets, and shipping an interface in many languages multiplies the text and layout resources alongside them.

None of this appears as a new feature to the user, which is why an update that changes little can still be a large download.

Delta updates are harder than they sound

Sending only the difference between two versions is the obvious fix, and platforms do it. The saving depends on how much of the binary actually stayed the same.

Modern compilers and code-signing can shift large regions of a file when a small change is made, so a minor edit produces a surprisingly large difference.

Reproducible builds and careful layout narrow that gap, but they take engineering effort that competes with everything else on a release schedule.

Security patching raised the frequency

Vulnerabilities are found and fixed continuously, and the response is to ship more often rather than to wait for a scheduled release.

Frequent releases mean each individual download matters less to the developer, which reduces the pressure to keep any single package small.

The cumulative effect lands on people with slow or metered connections, for whom keeping software current has become a meaningful ongoing cost.