PHPhotoLibrary.performChanges completionHandler not called when deleting assets on iOS 26

In my app, I use api provided in Photos framework to delete specified photo.

But after upgrading to iOS 26, the delete function in some iOS device no longer work.

The api will never triggers the system confirmation dialog, and the completionHandler is never called.

In the iOS Photos app, deletion works correctly on the same assets, but calling the API from my app does not work.

Steps to Reproduce

  • Make sure the app has Full Photo Library Access.
  • Execute the following code:
PHPhotoLibrary.shared().performChanges({
    let assetsToBeDeleted = PHAsset.fetchAssets(withLocalIdentifiers: delUrls, options: nil)
    PHAssetChangeRequest.deleteAssets(assetsToBeDeleted)
}, completionHandler: completionHandler)

Expected Behavior

  • The system should present a confirmation dialog asking the user to delete the selected photos.
  • After the user confirms, the deletion should occur, and the completionHandler should be called with success or error.

Actual Behavior

  • The system delete confirmation dialog does not appear.
  • The completionHandler is never called.

Environment

  • iOS Versions: 26.1 / 26.0.1

It looks like api bug. I want to check Is it a know issue and will be fixed. Thanks

Are you able to reproduce this in a small test application? If so that would be great to attach to a Feedback. There have not been widespread reports of this API not working on iOS 26.

In your specific code snippet, how are you populating the delURLs for the local identifiers. Have you confirmed that that fetch is returning assets?

Thanks for the follow-up.

The issue is currently observed on my user devices (only 3 users not all users are affected). Since I don’t have direct access to these devices, it’s difficult to install and test with a sample app. However, based on the app logs, I can confirm that the API was executed but the completionHandler was never called.

I’ve also noticed similar reports from other apps related to iOS 26, for example: https://support.google.com/photos/thread/380562887/cannot-delete-photos-directly-from-device-ios26?hl=en

For delUrls, the name might be a bit misleading, but it’s simply an array of PHAsset.localIdentifiers, and the format appears normal in the logs.

Even if the localIdentifiers were invalid, I expect that the completionHandler should still be invoked with an error rather than never being called at all.

PHPhotoLibrary.performChanges completionHandler not called when deleting assets on iOS 26
 
 
Q