We started implementing the new deferred photo processing and noticed a critical piece missing:
It is not possible to set any custom metadata on the photo proxy before it has finished processing. The WWDC video mentions we as the developer need to update the photo later.
In practice this proofs to be quite complicated to implement, because of the following reasons.
It is not known when a photo will be processed
Assuming the app is in the foreground it is still up to the operating system to decide when to process a photo
There is no callback for when a photo is processed; only photo library changes that can be tracked when the app is in the foreground.
Photo could be processed by the operating system when the app is on the background or not running at all.
AVAsset has no public property available to indicate whether a photo is still waiting to be processed or is processed.
Combined this requires complicated logic on the app side. The metadata needs to be cached on disk so that it can be added at a later stage and even if it is cached it is hard/impossible to match the cached metadata with a previously deferred photo.
We filed FB12418208, we would love to see this fixed before iOS 17 comes out. I imagine that other camera app developers will have the same issue.