Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug: Data loss risk on iOS - the Database folder is excluded from backups #613

Open
gregzo opened this issue Jan 6, 2025 · 1 comment
Open
Labels
bug/fix Something isn't working needs: triage

Comments

@gregzo
Copy link

gregzo commented Jan 6, 2025

Plugin version:
6

Platform(s):
iOS

Current behavior:
On iOS, our app specifies it's own iOSDatabaseLocation directory:
Library/Database

But I see that, just after the directory is created, the isExcludedFromBackup flag on that directory is set to true. See

try UtilsFile.setExcludeFromiCloudBackup(&dirUrl,

Because of this, none of the databases in that directory will ever get backed up, to iCloud or to a computer. I'm pretty sure that this will also exclude the files from a direct device to device transfer.

As a mitigation, our app explicitly sets the flag back to false, but we weren't expecting the behaviour. As a result, our users are at risk of data loss if they transfer data to a new iPhone before updating our app. Not cool.

Solution

I see that historically, the flag was set purposefully to hide the database from iTunes (#207), but that is completely misguided as in practice, there's now no way for the dbs in that folder to be transferred to other devices as long as the flag remains...

Happy to discuss. iOS backups are a specialty of mine, used to work in that domain specifically.

@gregzo gregzo added bug/fix Something isn't working needs: triage labels Jan 6, 2025
@gregzo
Copy link
Author

gregzo commented Jan 6, 2025

Update: I see that the issue only occurs if iOSDatabaseLocation is specified in capacitor.config so most users of the plugin will likely never see the bug. Still, very unexpected behaviour in my opinion - databases SHOULD be backed up by default, especially since that is the default data transfer mechanism on iOS to set up a new device, via iCloud backup or local backup or direct transfer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug/fix Something isn't working needs: triage
Projects
None yet
Development

No branches or pull requests

1 participant