Skip to content
Thoughtful, detailed coverage of everything Apple for 31 years
and the TidBITS Content Network for Apple professionals
21 comments

Extracting Data from an Old iOS App Broken by iOS 14.5

So this is embarrassing. Back in 2013, I was looking for an app I could use for diary-like journal entries, and I settled on Momento. I used it for a while, and at some point, it prompted me to upgrade to a new paid version. I didn’t want any of the new features, so I dismissed the upgrade notice. The app didn’t nag me to upgrade again that I remember, so I kept using it with no problems, apparently for years. Until, that is, Apple released iOS 14.5, which somehow prevented Momento—now called Momento Classic—from launching. Uh oh. (This problem isn’t limited to Momento. Several other apps have displayed similar alerts since upgrading to iOS 14.5.)

I wasn’t opposed to paying for the current version of Momento in principle, though the app’s current approach is a freemium model that would have required a $16.49-per-year subscription to get the features I used in Momento Classic. However, the question of whether the subscription was worthwhile wasn’t really at issue. When I downloaded the current version of Momento and tried to import data from Momento Classic, I got the same error dialog as when I tried to launch Momento Classic under iOS 14.5. Presumably, the new version needs to communicate directly with the old version to import data.

Momento Classic refusing to launch

Email to Momento’s developers generated a Zendesk auto-reply but no ideas for how to transfer the data. I wasn’t particularly bothered by losing the data, but all things being equal, I’d prefer to keep it. So after waiting three weeks, I decided to see what I could do on my own. (Momento support finally replied to my initial message, suggesting only that if I had a separate backup of the Momento Classic data, which I don’t, I could potentially work with that on an iPhone running an older version of iOS.)

Restore to an Older iPhone

My first thought was to see if I could restore the Momento data from a backup of my iPhone 11 Pro to an old iPhone 6s that was still running iOS 12 and could thus run Momento Classic. I erased the old iPhone and set it up again, first trying to restore from an iCloud backup and then from a local backup made in the Finder. In both cases, the iPhone insisted on upgrading itself to iOS 14.5.1. I blocked it both times since I assumed the upgrade would render Momento Classic inoperable again, but then my only choice was to erase and start over.

I was able to restore a 2014 backup made when I had an iPhone 5, and that even had some of the Momento data I was looking for, but of course, nothing since 2014. So I could theoretically get Momento Classic working again, but not with the current data.

For giggles, I tried restoring an iPhone 11 Pro backup from iOS 14.5.1 onto an old iPhone 6 running iOS 12.4. That failed too, unsurprisingly, but the fact that it didn’t work is worth keeping in mind. An old iPhone that can’t run the current version of iOS isn’t worth much as a backup device since you would be limited to the data on it as of the last time you had used it, however many years before.

Can't restore to an older version of iOS

Extract Data from the iPhone Backup

Working with the backups got me thinking that perhaps I could extract the data from a recent backup of my iPhone 11 Pro. I normally back up only to iCloud, but I had made a local (unencrypted) backup on my Mac while trying to see if I could restore that without upgrading to iOS 14.5.1. That backup would be up-to-date, at least, and getting the data out turned out to be surprisingly easy.

I downloaded the demo version of iExplorer, launched it, opened its Backup Explorer view, and did a search on “momento.” That revealed Documents and Library folders, and a few seconds later, I had discovered /Library/Application Support/Momento Data/Database.momentodb, with a recent modification date. I dragged the file to the Desktop and had my data back. Eureka! (I later tested iPhone Backup Extractor, and it too was perfectly capable of extracting that file; I assume iMazing and AnyTrans would have been similarly useful.)

Extracting a file using iExplorer

The next question was what format Momento used for its database. I dropped the file on BBEdit, which is happy to display nearly anything, and got my answer instantly: SQLite 3. I also scrolled down in the file and confirmed that it did indeed hold my text. So at the very least, I could write some grep searches to clean up the file to get my text back.

Looking at an SQLite file in BBEdit

But could I do better? I’m no database expert, but I’ve had to fiddle with MySQL databases for the old TidBITS Publishing System and our current WordPress content management system, so I knew there were good Mac apps for working with databases. I opened Setapp and searched on “sqlite” to see what it had. A cornucopia of riches!

SQLite-capable apps in Setapp

I picked Base at random, launched it, opened my database, and after a few minutes of poking around, found my data. A quick trip to File > Export, and I had my data back in a delimited text file. (I later confirmed that at least SQLPro for SQLite provided the same capabilities for opening and exporting the Momento database file.)

So at long last, I had my data back, if not in its pretty Momento interface.

Could I Inject Data into a Backup?

The fact that I was so easily able to extract data from a local unencrypted iPhone backup got me thinking. Since I now had my data outside of Momento Classic, perhaps there was a way to get it back in, either to Momento Classic or the new version of Momento. For this to work, I’d need to modify data in an unencrypted backup on my Mac and then restore that backup to an iPhone.

To make a long story short, I struck out, despite my extreme cleverness in finding the necessary inscrutably named file in the local iPhone backup and replacing it with an identically named version of the extracted SQLite database. For one test, I modified the database slightly; for another, I replaced the 2014 version with the 2021 version. With the modified version of a database injected into the new version of Momento, it launched fresh, with no entries at all. Replacing the 2014 database with the 2021 version seemingly corrupted the backup because the restore included only a single third-party app, not the large collection that should have been there.

I guess I’m not surprised that injecting data into a backup and restoring doesn’t work because it feels like it could be a security vulnerability. After I published this article, the developer of iPhone Backup Extractor said that it could have recalculated the necessary checksums after updating the data in the backup. However, that didn’t prove to be necessary.

A Happy Reversal of Fortune

Remember how I had assiduously prevented the iPhone 6s from upgrading from iOS 12 to iOS 14.5.1? I did that because Momento Classic stopped working in iOS 14.5. However, I had also pulled an iPhone 7 running iOS 14.0 out of the closet while figuring out what I had available for testing. It didn’t contain the latest version of Momento Classic’s data, but the app still launched. As part of the testing to see if I could inject data into a backup, I brought the iPhone 7 into play, figuring that I could restore a modified iPhone 11 Pro backup to it. As before, I was stymied by the need to upgrade to iOS 14.5.1, but this time I let it upgrade itself. The injection test failed, but you can imagine my surprise when Momento Classic launched, even if it had no data in it. Wait, what?

Apparently, whatever prevented Momento Classic from launching in iOS 14.5 was also related to running on an iPhone 11 Pro. Trying it on an iPhone 7 changed the underlying elements such that it could launch.

I erased the iPhone 7 again—I can’t tell you how many times I did this—and restored it from the previous night’s iCloud backup from my iPhone 11 Pro. Once it was operational, I checked Momento Classic again, and again it worked, letting me create a separate backup and export the data as a text file as well. Next, I opened the new version of Momento and imported the data from the old version. And finally, I made a backup from the new version on the iPhone 7 and was able to restore it into the version I have on the iPhone 11 Pro. Success!

Momento Classic working on the iPhone 7

All’s well that ends well, but you know how I say that upgrading isn’t really optional, even if you can put it off temporarily? (If not, go read “Why You Should Upgrade (On Your Own Terms),” 4 September 2015.) This experience is yet another reason why you can’t fall too far behind with upgrades. I made one decision not to upgrade long ago and then failed to think about it again. It’s possible that Momento warned me subsequently, though I have no memory of that happening; regardless, I knew I was using an ancient app and have no one to blame but myself for what happened.

A Late-Breaking Better Solution and Clue

After I published this article (but before it appeared in a TidBITS issue, after which we don’t make changes), Steve Nicolai left a comment saying that he had solved a similar issue with an old app refusing to launch under iOS 14.5 by offloading and reloading it. Initially, I read that as deleting and reinstalling. In a test with Momento Classic on my iPhone 11 Pro, I confirmed that he was correct, but deleting the app erased its data too. Data loss aside, this was a significant step forward, since it brought a previously inaccessible app back to life in situ.

Then Steve set me straight. He was referring to the process of offloading an app to save space, which you do in Settings > General > iPhone Storage. Tap the magnifying glass icon at the top to search for the app you want, tap Offload App, tap Offload App again in the prompt, and once it has been removed from your iPhone, tap Reinstall App. When I did that with the NME Digital app, it came back to life!

Offloading and reinstalling an app to fix it

This process didn’t work with several other apps in this situation because they were no longer available for download in the App Store. None were important to me, so I just deleted them. Had they contained useful data, I might have tried to extract it. I don’t know why only some older apps remain in the App Store—it’s likely up to the developer.

Steve’s insight explains why Momento Classic and these other apps that stopped working in iOS 14.5 were able to launch on the iPhone 7 after I restored it from the iPhone 11 Pro’s backup. iOS’s backup and restore process doesn’t include the apps themselves; instead, it downloads fresh—and functional—copies from the App Store. (That strategy makes a ton of sense since Apple can maintain one copy of an app in the App Store rather than backing up millions of copies installed on iPhones around the world.)

The fact that merely reloading an app allows it to launch suggests that the actual problem was some sort of expired certificate, not corruption or incompatibility with iOS 14.5. When you try to launch an app with an expired certificate, iOS 14.5 says it needs to be updated by the developer because that process would provide it with a new certificate. My guess is that the App Store itself automatically applies a new certificate to old apps when they are redownloaded, which explains why reloading or restoring from backup both bring affected apps back to life.

Regardless, now you know what to do to revitalize at least some old apps that suddenly stop working in iOS 14.5.

Subscribe today so you don’t miss any TidBITS articles!

Every week you’ll get tech tips, in-depth reviews, and insightful news analysis for discerning Apple users. For 29 years, we’ve published professional, member-supported tech journalism that makes you smarter.

Registration confirmation will be emailed to you.

Comments About Extracting Data from an Old iOS App Broken by iOS 14.5

Notable Replies

  1. “I knew I was using an ancient app and have no one to blame but myself for what happened.”

    You’re too hard on yourself. I salute your resourcefulness, but I’d have hounded the app developers far more aggressively before jumping through all those hoops!

  2. Well, it wasn’t like I hadn’t been warned, and I wasn’t that attached to the data. But once I started down the path of trying to recover, I got interested…

    The one thing I might have asked the developers for was the SQL incantation to create a proper backup from the database that I had extracted that I could then import into the new version. That seemingly should have worked.

  3. Adam, many thanks for this extensively documented article. Really valuable!

    It also exemplifies the way to success in IT matters: never give up! :slight_smile:

  4. I also liked Momento until they got too fancy, but I exported the data way back when. One of the features I liked was the good export into html.

    A trick that worked with a few old apps that wouldn’t launch after the 14.0 upgrade is to off-load the app leaving the data on the device, then download the app again. I don’t know why this worked the times it did, but I suspect that it may have have been that apple updated the certificate at some point like they just did with a whole slew of oldies.

  5. I enjoyed learning everything for the article, but it turns out I might not have had to do nearly as much gruntwork.

    Thanks to Aidan Fitzpatrick of Reincubate for telling me that not only does their iPhone Backup Extractor utility have a way to modify a backup such that you can change data and restore it to an iPhone, they’ve written instructions explicitly for Momento.

    It turns out my hunch about backups having checksums was correct, but apparently, iPhone Backup Extractor can update those checksums to match the new data. I’ll give it a try soon.

    Their support team has written a bunch of similar how-to guides that are well worth checking out if you’re having issues.

  6. This is probably a silly question, but did you try the iTunes export feature? Or has that vanished with iTunes itself?

  7. You can still access files on the iPhone, even without iTunes, but that works only for files that are explicitly made available by apps, not the app’s internal files.

    In this case, if I had been able to launch Momento Classic and create a backup or export, that file would have been available in the Finder to download and transfer. But of course, if I’d been able to launch Momento Classic, I wouldn’t have had to jump through any of these hoops! :slight_smile:

  8. I had a slightly different issue, when I updated my iPhone 7 to iOS 14.5.1, the app Grocery IQ would not launch, iOS said it needed to be updated. When my wife upgraded her iPhone 12 to iOS 14.5.1 a few days later, Grocery IQ worked.

    I offloaded the app on my phone and then reloaded it, and the app now works on my phone. My only guess is that there was some filesystem corruption in the app during the upgrade. Redownloading it by offloading and reinstalling fixed that.

  9. Hey @Steve_Nicolai, thanks for this detail! I hadn’t considered the possibility that the app had somehow become corrupted, in part because the dialog is so matter of fact about how the developer needs to update it and in part because several other apps were affected.

    However, you were spot on—when I deleted the Momento Classic app and reinstalled it, it opened up fine. This alone wouldn’t quite have solved my problem because deleting the app also deleted its data, and when I reinstalled it, its data was gone. But now I believe I could have restored the data through iPhone Backup Extractor.

    I confirmed your technique by deleting and reinstalling Photo Studio, another app that was showing the same problem. Complete success, though if the app had any data (I never really used it, so I don’t know), it would have been lost too.

    What this suggests, however, and I can test this later, is that erasing the iPhone that’s having the problem and restoring from a backup might fix the problem purely from the standpoint of reloading the app from the App Store during restore. I’ve found another app on my iPhone 11 Pro that’s showing the problem (NME Daily), so once I have the time later today, I’ll backup, erase, and restore. I think this will work in part because all the apps I’ve had trouble with in this way work on my iPhone 7, which was restored from the iPhone 11 Pro backup.

    I do believe this will be contingent on the app still being in the App Store in some way. I don’t quite know what drives this, but some ancient apps are, whereas others are not.

  10. Notice that I said offload, not delete. Offloading removes the application without deleting the data for the application. You can then reinstall the app and keep the data. Offloading is done through Settings → General → (iPhone or iPad) Storage.

  11. Right—offloading is different from deleting! The only hard part is that it’s hard to find apps in Settings > General > iPhone/iPad Storage because they’re listed by size, not name. Lots and lots of scrolling, later, I’ve now gotten a chance to test this with a handful of apps that were showing the problem. There are two possibilities:

    • Offloading and reloading the app, if successful, renders it functional again, presumably with its data, though none of the test apps I had seemed to have had data.

    • With some apps, when you try to reload the app, you get an error that it’s not in the App Store anymore, and all you can do is delete it. In this case, you’re not really any worse off (and I suspect those apps weren’t really functional before iOS 14.5 either).

    I suspect, but I’m not going to bother to test now, that a backup, erase, and restore cycle on the iPhone would have the same effect. But it’s probably not worth it for the one or two apps someone might have in this situation.

  12. Note that there is a Search function so that you can narrow the possibilities easily.

  13. Doh! I actually pulled down a couple of times because search fields are often hidden that way, and I never even saw the magnifying glass icon. :slight_smile:

  14. Adam, the title of TidBITS #1565 is a little misleading because it says “… fix apps broken by iOS 14.5”.

    I was hoping it would tell me how to fix an app made by the late Hardy Macia so I could use it under iOS 14.5. Because 14.5 & later kills this app (crucial to me and many others) I can’t go past 14.4.2. Unfortunately, there isn’t a newer version so the that is out and my backup iPhone is an iPhone 6 that is limited to iOS 12.x.

  15. This gave me hope that I might be able to extract several years data from Migraine Diary (Apple now say I cannot use this in UK) backup in iMazing. Any suggestions of how to proceed? I’m not good with databases.
    Thanks

  16. Did you read what I said about offloading and reloading the app? If it’s still available in the App Store, that should bring it back to life in iOS 14.5. But you’d need a device to test this on, since if it’s not available, offloading it kills it.

    The iPhone Backup Extractor support people seem to be aware of this general concern and may be able to help. iMazing support may as well. Beyond that, you need to find someone who could help walk you through using one of those apps and seeing what the exported data looks like—there’s no guarantee it’s in an SQLite database format like mine was.

  17. Yep, but unfortunately that won’t work for me. After Hardy passed away, the app was bought by an Italian guy in Europe. He promised to update the app so it would work on new iOS versions but he lied. What he actually did was convince another European developer of a similar app already in the App Store to license that app. The Italian then rebranded the licensed app as a new version of Hardy’s original app and it is that “new” app that is on the store. So now there are two identical apps on the store but with different name and “different” developers. The licensed app isn’t as good as Hardy’s app by a long shot.

  18. I’m not sure if I’m quite understanding, but if Hardy’s original app remains available for download to previous purchasers (questionable given that he passed away), the offload/reload could still work. You could test this, if you had a test iPhone, by erasing it and restoring from the backup of your main iPhone. I can’t think of any easier way to test without potentially losing the app in the process.

    It sounds like the people who took it over afterward reused the name for an entirely new app (at which point it would have a different ID at the end of the URL, like id980592846). If that’s the case (much as Momento replaced Momento Classic but was a completely different app), it wouldn’t take over from Hardy’s original app in the offload/reload cycle.

  19. Yes, that is what SHOULD have happened but others who had Hardy’s version and just let it update found the cloned substandard app. AFAIK, Hardy’s version is totally gone, only the name remains. I’ll check with some of the other users and ask if anyone tried the offload route.

  20. I was able to use iMazing to backup my iPhone before updating. My simple milage app failed to work after the update to 14.5. Fortunately I have an iPhone 6S that is still on an older operating system. I restored ONLY the failed app to the 6S using iMazing and all is there working perfectly with the latest data. I was not able to update the app as it has not been in the app store for years.

  21. Oh, interesting. So you were able to back up an app on one iPhone and then restore it to another even though it was no longer in the App Store. That’s good to know!

Join the discussion in the TidBITS Discourse forum

Participants