Offload Unused Apps

Let’s start with a case study of the Offload Unused Apps functionality in iOS that was introduced back in 2017 with iOS 11.

If you try to perform a Spotlight search for an application that has been offloaded, there is absolutely no indication before you tap on the app icon that it is not locally installed on your device:

The result is an infuriating experience that violates a number of basic design principles:

To cope, I am forced to repeatedly tap, wait some number of seconds or minutes, then tap again to see if the app has been re-installed. Or I have to exit the Spotlight interface and furiously swipe through the various Home Screen pages hoping I can find the app in question.

What makes this especially frustrating is Apple already solved these problems. In the rest of SpringBoard (the Home Screen UI), you see a helpful indicator icon that conveys the app is “in the cloud” and must be downloaded:

Offload Unused Apps Cloud Indicator Icon

And when you tap on an offloaded app from the Home Screen UI, you get a fun circular progress indicator:

Offload Unused Apps Loading Indicator Animation

If Apple simply consistently offered these interface affordances across Spotlight and the Home Screen, that’d address my core surface-level concerns about the Offload Unused Apps functionality.

But there’s a more fundamental issue at play here that speaks to corporate ideology and some endemic trends with consumer-facing software these days. Recently I’ve been traveling internationally a fair bit, often with limited or unreliable Internet access. When you’re traveling, you frequently depend on otherwise seldom-used travel apps for flight bookings, hotel/Airbnb accomodation lookups, translation, public transit, and the likes. I’ve found iOS’s offloading heuristics to be quite aggressive, and often wind up in the situation where an app I had used the month prior had already been purged from the device, to my despair.

Generally speaking, the premise of offloading apps is great, but as the end-user, I’m left in the terrible position of an all-or-nothing affair. Either I buy into Apple’s specific heuristics around when and which apps should be offloaded, or I disable the functionality altogether. This is a great example of where the “Convention over Configuration” philosophy (or really convention at the complete exclusion of configuration) is actively user-hostile.

App Pinning Strawman

Why can’t I pin certain apps that I care about, apps that maybe I seldom use, but when I need them, I really need them? Pinning an app would indicate to iOS to never purge it from my device. Or how about pinning an entire virtual folder ? I get that this introduces some level of conceptual burden. All of a sudden Apple would have to convey what pinning means, visually indicate a pinned app, provide contextual menus to toggle, etc. But why not? Hell, shove another nested menu in the (already overburdened) Settings app for all I care. But give me a choice.

Pin App Context Menu Item Mockup

Right now, I have no visibility into when an app gets offloaded. I assume there’s some time-based heuristic given when the program was last accessed, maybe coupled with some resource pressure metric (eg if storage is near-full) to more aggressively prune apps as necessary.

This particular issue hints at the “leaky abstraction” of iOS trying to hide the realities of a hardware device with limited, fixed physical storage. For the most part, we do not have to concern ourselves with how many free gigabytes remain on our devices. But then you butt your head against daily frustrations like this one and have limited recourse for troubleshooting or tuning the functionality to suit your needs.

I would even settle for a somewhat more abstruse heuristic that allowed for less granular overrides, like, say: never offload any apps on the first page. This would certainly be clunky, inconsistent, and even harder to convey, but it would at least empower users to actively prevent certain applications from being offloaded.

We can do better.