PHAssetResourceUploadJobChangeRequest doesn't upload iCloud-optimized photos — is this expected?

I'm implementing PHBackgroundResourceUploadExtension to back up photos and videos to our cloud storage service.

During testing, I observed that iCloud-optimized photos (where the full-resolution original is stored in iCloud, not on device) do not upload. The upload job appears to silently skip these assets.

Questions:

  1. Is this behavior intentional/documented? I couldn't find explicit mention of this limitation.
  2. If the device only has the optimized/thumbnail version locally, does the system:
- Automatically download the full-resolution asset from iCloud before uploading?
- Skip the asset entirely?
- Return an error via PHAssetResourceUploadJobChangeRequest?
  1. For a complete backup solution, should we:
- Pre-fetch full-resolution assets using PHAssetResourceManager.requestData(for:options:) before creating upload jobs?
- Use a hybrid approach (this extension for local assets + separate logic for iCloud-only assets)?

Environment: iOS 26, Xcode 18

PHBackgroundResourceUploadExtension will automatically download resources from iCloud Photos if they are currently not locally stored on the device. This process naturally occurs as part of processing the PHAssetResourceUploadJob request. There is some mention of this in the article. See:

https://developer.apple.com/documentation/photokit/uploading-asset-resources-in-the-background#Create-download-only-jobs

There may be failures that prevent downloads from occurring (eg, the device storage is full). Check for errors on the PHAssetResourceUploadJob to identify the failure point.

PHAssetResourceUploadJobChangeRequest doesn't upload iCloud-optimized photos — is this expected?
 
 
Q