Last night introduced me to possibly the worst interface design I have ever seen, courtesy of Apple. I've felt for quite a few years that their interfaces have been getting progressively worse, but it's often quite hard to pinpoint why. There's the obvious culprits, like the disgusting top bar in iTunes or the horror-show that is Safari, but some are more subtle. So this is a short post about the worst user-interface component I have ever seen.
iCloud isn't really a thing, it's just a marketing name for a variety of different services. As a techie this is obvious, for anyone else it obscures all the detail and becomes its own entity.
iCloud == backups == your stuff on all devices == magic.
So you "enable" iCloud for an app. What does that do? It probably stores the data on some iCloud servers and includes it in versioned backups. Or not. And at no point in time will you know for sure what is and isn't included. Signal has an iCloud setting, as an example. What does it do? No idea, because it doesn't restore your messages if you reset your phone.
The worst user-interface component I have ever seen
So let's talk about iMessage. iMessage combines text messages and its own messaging system in a more-or-less opaque way to the end user. iMessage's own system obviously goes via some service on Apple's end, but is that iCloud? Dunno.
Now where it gets really confusing, and which is the worst user-interface component I have ever seen, is here in the iCloud settings on an iPhone.
The iMessage toggle here clearly indicates that we have iCloud disabled for it, which you would presume means that it's not being backed up.
If you enable the iCloud toggle for iMessage (the default, by the way), your messages are synchronised across your devices and removed from your backups. This is a totally separate service to iCloud backups, masked by the fact everything is labelled as "iCloud".
If you delete a message, it's deleted from all your devices immediately, and it's gone forever. Delete an entire conversation? Gone forever.
If you want your messages to be included in versioned iCloud backups, you have to disable the iMessage toggle under "Apps using iCloud"
Let's just clarify that once again:
Turn off the checkbox to back up your messages.
How could they have done this better?
Well first, why does it remove messages from versioned backups when you enable the sync service? It could just do both. Otherwise, they could separate that iMessage checkbox from the rest of the list and provide a clear indicator of what it actually is, e.g. providing a heading that clearly denotes that you're enabling a sync service instead of a backup. Then explain the difference for normal people, because nobody knows what that is.
This iMessage toggle became the default in the past few years, I believe. It is not an obvious default, and as I don't personally use an iPhone I didn't notice what it was really doing until it was too late.
This cost my girlfriend somewhere between 5-10 years of messages when her phone started failing, triggered random screen gestures, and deleted her iMessage conversation with her mum. Yes there should have been other backups if they were important, and I'm resolving that for the future by swapping her to an Android phone where I can manage backups myself as I do for my own (a combination of Syncthing, ZFS, and off-site backups for me).
And for anyone designing a user-interface: prettiness doesn't matter. Your interface must be obvious, above all else. I watch non-technical people use terribly ugly user interfaces efficiently every day, because the interface is clear even if it's not pretty. Apple used to feel like they understood how to achieve both (most of the time).