Develop

Cloud Backup

Updated: Oct 21, 2026
Cloud Backup saves your app’s data to the cloud and restores it when a user reinstalls your app, resets the device, or moves to a new device. Apps are opted in by default, and it needs no code: Cloud Backup uses Android Auto Backup⁠ at the filesystem level.
To make sure your app’s data is backed up:
  • Make sure Enable Automatic Cloud Backup is on, including if your app used Cloud Saves V2. In the Developer Dashboard⁠, go to Development > Cloud Storage and select your app. Turn the toggle off to opt out.
  • Store save data and settings in a directory that is backed up.
  • Keep the app’s backup under 100 MB.
  • Keep DLC asset files out of backed-up directories.
Cloud Backup requires Meta Horizon OS v35 or later. App data is encrypted on the device and stays encrypted on Meta’s servers. Users can opt out of Cloud Backup in their device settings.
Cloud Backup vs Cloud Storage
Cloud Storage V2 shut down on January 31, 2025. Cloud Backup replaces it for saving and syncing app data across devices.

Technical implementation

Directories that will be backed up

Auto Backup⁠ includes files in most of the directories that are assigned to your app by the system. You can find these file locations by accessing these through a Context object⁠:
Custom folders in the app’s root directory are not backed up. Put custom folders in the directory returned by getFilesDir()⁠.

Backed-up folders

/data/data/<package-name>/files/
/data/data/<package-name>/<custom-folder>/
/sdcard/Android/data/<package-name>/files/

Not backed-up folders

/data/data/<package-name>/cache/
/data/data/<package-name>/no_backup/
/sdcard/Android/data/<package-name>/cache/
/sdcard/Android/data/<package-name>/<custom-folder>

Directories that won’t be backed up

Android Auto Backup excludes files in directories returned by getCacheDir()⁠, getCodeCacheDir()⁠, and getNoBackupFilesDir()⁠. The files saved in these locations are needed only temporarily and are intentionally excluded from backup operations.
In addition, any folder within getFilesDir()⁠ named UnityCache will not be backed up.
By default, these excluded directories are cache/ and UnityCache/
You can also customize excluded files/folders that do not need to be backed up in the Developer Dashboard⁠, under Development > Cloud Storage. When specifying custom excluded files, keep the following details in mind:
  • You can only specify paths relative to the package’s internal/external files directories (these are the directories returned by getFilesDir()⁠ or getExternalFilesDir()⁠).
    • Example: if the data you want to exclude is stored under /storage/emulated/0/Android/data/com.company.somegame/files/UE4Game/SomeGame/SomeGame/BigFiles/SomeFile.txt then you would specify UE4Game/SomeGame/SomeGame/BigFiles/SomeFile.txt as the exclude path.
  • If you specify a custom file exclusion, all matching files/folders will be excluded from both the internal/external files directory. You cannot specify which of the two directories to target.
  • You cannot use wildcards. Paths must reference either exact files or folders precisely.
For more fine grained control over file/folder inclusion and exclusion, see the Android Auto Backup Including Files documentation⁠.

Should DLC files be stored in directories that will be included in the backup?

Put DLC save game files and config files in one of the directories that will be backed up.
Do not put DLC asset files in a backup directory.
Put assets in an excluded directory so that they don’t get backed up. Asset files can push the backup over 100 MB, which makes the backup fail. They also waste the user’s upload, and after a reinstall following an app update, the user downloads old file versions that the update then replaces. The DLC entitlement lets the user download those files again.

Testing

Testing Cloud Backup

The Android shell bmgr command can be used to test the backup system. Use the following command to force backup to run for a specified package.
bmgr backupnow --monitor-verbose <package-name>
The command may be run directly from your local host with adb shell or from an adb shell session on your device.
You can learn more about bmgr by running the command without options.
Note: Forcing a restore via ADB is not supported. Restores happen automatically when you install an app. To transfer backup data to another device, uninstall and reinstall the app on that device to trigger the restore.
Note: A bmgr backup is not the same as adb backup, which is not supported.

How can a developer check when the last time an app backup occurred?

You can check the last time an app was backed up by navigating to the Cloud Backups⁠ page on the Meta VR website.
You can also check by navigating to the Cloud Backup tab located within device settings on your Meta VR device.

How can a developer check what files were included in a backup?

You can validate what files are included in your backup by monitoring logcat while a backup is executing. Logs should be outputted which indicate which files and their respective sizes were included in a backup. This is useful to check if your app goes over the 100 MB backup limit and need to check which files are taking up space in your app’s backup or if you want to validate any recently implemented file exclusion/inclusion rules are working as intended.
You can run the following adb command to filter logcat to get only backup related logs:
adb logcat | grep Backup

Toggling Cloud Backup on a live app for testing purposes

Note: Take care if you do this. It is not advised on a live app.
You can turn off the backup and restore feature in the device settings with the Cloud Backup toggle. By default it is on for all users. You can clear a specific app’s data with a new button in the storage setting panel.
You can also turn off Cloud Backup for your app in the Developer Dashboard⁠ under Development > Cloud Storage.

How backup and restore work for users

When does an app I own perform a backup?

Backups happen automatically at the following times:
  • Once per night, when the device is idle, charging, and connected to WiFi, similar to when the system will update the OS.
  • When the app is uninstalled, if it was installed from the store
  • Each time the app is exited, up to once every six hours
Each user can have multiple backup ‘slots’ per purchased app, per device, and each backup run will not overwrite the previous slot. In addition to automated backups, users can manually request backups by going to the Cloud Backup tab located in device settings.

When does an app I own restore its Cloud Backup data?

Cloud Backup automatically restores the latest backup for an app when it’s installed. Users can determine which backup will be restored by navigating to the Cloud Backups⁠ web page. Here users can also request to manually restore a specified backup at any time.

Does my Cloud Backup data generated on one device transfer to another device?

Yes. If Cloud Backup cannot find data for a specific app+device pairing, then it will restore the most recent backup for that app across all owned devices.
Consider the example of a user who has Cloud Backup data generated for an app on their Meta Quest 2 and then buys a Meta Quest 3. Upon installing the app on their new Meta Quest 3, the Cloud Backup system will restore backed-up data from the Meta Quest 2, due to being unable to find an instance of backed-up data for that app associated with their Meta Quest 3.
Once Cloud Backup is performed on the Meta Quest 3, that data will be backed up under the ‘slot’ for their purchased app, for their Meta Quest 3 headset. Beyond that point, the Cloud Backups for Meta Quest 2 and for Meta Quest 3 will diverge.
A user who wishes to copy Cloud Backup data between two devices can navigate to the Cloud Backups⁠ tab on the Meta VR website and perform a restore of the Cloud Backup data targeting the device they want to transfer the data to. A new slot for the transferred Cloud Backup data will automatically be created for the targeted device.
Cloud Backup data may be transferred from newer generation headsets (such as Quest 3) to older generation headsets (such as Quest 2), and vice versa.

How can I view and delete Cloud Backups for an app I own?

To view existing backups across all of your apps, navigate to the Cloud Backups⁠ tab on the Meta VR website.
On this page you’ll find a list of owned applications, and a filter to search by name. If an application has an existing backup in the cloud, there will be a timestamp, size, and an option to delete the backup.

Troubleshooting

What are the common reasons a directory is not backed up?

The common cases for non-conforming app data:
  • The app data is in a non supported directory (such as a custom folder in the root directory)
  • The app data for the app is over 100 MB size
  • A directory that contained save data was accidentally excluded by the developer

Does the app need to update or be opened in order for the backup to occur?

Usually not. If your app meets the requirements at the top of this page and is otherwise eligible for backup, the backup happens on its own. The exception is a stopped app: Android marks an app as stopped when it is newly installed or force-stopped, and Cloud Backup skips a stopped app until the user opens it.

How does a user manually trigger a backup (for example right before they do a factory reset)?

Ad-hoc backups are supported for both users and developers in the Cloud Backup panel in device settings. Developers can also test them using the bmgr command over ADB.

If a user has an older version of the OS and hasn’t turned their device on, what happens? Can they turn it on and have it backup their saves?

Only after the device updates to Meta Horizon OS v35 or later. The usual requirements for OS updates apply.

How do I delete an individual save?

Go to the Cloud Backups⁠ profile. A delete option appears next to each save. Click that to delete save data for that app from the cloud. Deletions are permanent. If you delete all backed up data for that app, it is gone from the cloud. The app may have backup data on multiple devices, to fully delete all cloud data you may need to delete the backups for that app across all owned devices.

What backup is stored when a user has app data on multiple devices?

Each device has its own backup history. A backup generated on one device would not conflict or otherwise overwrite backups generated on other devices.

How many backups are stored for each app?

Each app stores at most five backups per device. Additionally, the two oldest backups for an app are retained up to a week after they’ve been generated before overwriting them with a newer backup.

Whenever I uninstall an app, it says my data may be permanently lost. Does this mean Cloud Backup isn’t working?

No. The message is a warning. Uninstalling an application removes the local data, but does not delete any Cloud Backups. Check your profile’s Cloud Backups⁠ or navigate to the Cloud Backup tab in device settings to confirm that the backup is safe on the cloud.