Vinay Hiremath

Why, WhatsApp?

Published on

The promise of WhatsApp local backups, almost necessitated due to the unencrypted nature of its Google Drive backups (easily recovered with a purpose-built parsing tool), seems alluring at first glance. While the functionality is referenced throughout the app as well as on their FAQ page answering this very question, things don’t exactly work as written, to say the least. Well, it’d be hard to do so, considering the answer to the FAQ leaves out numerous details that would be required for a submission in an elementary software engineering course. The user is to “transfer the files to the new phone using a computer, file explorer or SD Card," mentioning that data could be in either "/sdcard/WhatsApp/", “internal storage," or “main storage." Which files one must copy, let alone which one of these three locations hosts the files or which path one must check in internal or main storage appears to be exercises left to the reader.

Assuming one does learn (through a myriad of online posts from users frustrated by the issue) that running WhatsApp on Android 11 now uses a relatively arcane path (/Android/media/com.whatsapp/WhatsApp/media), and does manage to copy these files to the analogous location on a new device, the user is then tasked with the shockingly convoluted process of restoring this backup.

Several online user rants later, one might hope to learn that copying files from an arcane location on one device to a new device was the least of their concerns. At least on two separate installs I tested, corroborated by numerous reports online that indicate this is far from a standalone occurrence, the app only prompts the user to restore from a local backup if, 1. the user selects Continue on the in-app dialog that reminds the user of upcoming contact and file access prompts, 2. the user denies contacts access in the system prompt, 3. the user allows the app access to local files, and 4. the user selects Give Permission on the Google Drive backup prompt while jamming the greyed-out Restore button, repeating step #4 until the Restore button is activated before the Google Drive backup prompt returns.

To make matters worse, the aforementioned process, already far from intuitive, only appears to work if Google Play services are installed on the device in question. Otherwise, even if WhatsApp will work perfectly including Google-independent push notifications for messages, setting up the app will not even prompt the user to restore a backup. Apparently, the local restore functionality is hidden behind the Google Drive prompt, and without Google services neither are displayed or function. Certainly a peculiar design decision, if you ask me.

For some more frustration, after performing the above steps, I was finally able to select the prompt to restore the local backup with the app correctly detecting the size and number of messages. Hopeful that I was finally free from the grasp of unencrypted Google Drive message storage and lost message histories on every device change or app reinstall, I enjoyed a moment of satisfaction before seeing that the app subsequently decided my backup was invalid. At that point, after dealing with all of the quirks of this process, I didn’t have the energy to wonder why, and gave in to a fresh install without chat histories.

In case this process isn’t arduous enough, everything that has been described above needs to be performed correctly within a very limited number of attempts, because the UI flow of restoring messages is buried behind device activation, which only allows a few phone number verification attempts (SMS or call-based) in a given time period.

After a few attempts by which, with the help of generous Reddit contributors and YouTube tutorials, I was able to decipher the process described above to restore messages from a local backup, just to learn that my backup was declared invalid despite being a complete copy of the relevant folder on my old device, I was locked out and couldn’t verify my number for hours. Having giving up on any prospect of seeing my old messages again, I was finally able to activate my device and complete the process late that evening.

Why anyone would design a process with even one of these quibbles, let alone a slew of such UX failures, is beyond me. Why it would be implemented in a production app and not immediately deemed buggy code to be fixed is beyond me. I can only hope that these are not the result of dark patterns incentivizing the user to resort to unencrypted Google Drive backups. [Hanlon’s razor](Hanlon’s razor - Wikipedia) and all, it is much easier to make the case that this is the result of a series of incompetent design and development decisions, and not enough users care enough about local message history transfer to convince developers to fix it. Yet another reason to use a sane messaging app that manages end-to-end encryption with local backups that aren’t just an incomplete afterthought, or even one that at least trades a degree of privacy for usability.