Description: I am encountering critical issues with PHPickerViewController using the "Zero-Permission" configuration. The behavior differs significantly between iOS 17 and iOS 26.4, but both prevent successful image selection.
Observed Behaviors:
On iOS 26.4 (iPhone 17 Pro Max): The PHPicker UI fails to render the photo grid entirely. Upon initialization, the system UI displays an "Unable to load photo" alert, preventing users from even viewing or selecting images.
On iOS 17: The picker UI loads, but after the user selects an image and adds it, the subsequent itemProvider.loadObject call consistently fails, returning an error and preventing our app from retrieving the image data.
Current Implementation:
var config = PHPickerConfiguration()
config.filter = .images
config.selectionLimit = pickLimit
// Problematic logic:
if ABTestManager.shared.isPHPickerCurrent {
config.preferredAssetRepresentationMode = .current
}
let pickerVC = PHPickerViewController(configuration: config)
pickerVC.delegate = self
user device Images:
What I have tested:
I have been using preferredAssetRepresentationMode = .current in my AB tests.
I have not yet tested .compatible mode, as my application logic requires access to high-fidelity assets. However, the current behavior suggests a regression or a fundamental incompatibility with how the system handles image containers for high-end hardware (e.g., iPhone 17 Pro Max) in the out-of-process picker.
Supporting Documentation:
Minimal Reproducible Project: [Attached]
Logs: [Attached sysdiagnose logs]
My Questions:
Is the "Unable to load photo" UI failure on iOS 26.4 a known limitation for certain high-resolution asset types when using .current mode?
Are there specific handling requirements for NSItemProvider when the system fails to resolve the image data in .current mode on older iOS 17 devices?
Given that these failures occur in a "Zero-Permission" context, are there specific metadata or image processing constraints I should be aware of to prevent the picker from entering a "failed" state?