It seems that unlike in earlier versions (IMG_3313.HEIC in the example below), iOS/iPadOS 18 (IMG_0848.HEIC and IMG_0848_edited.heic) no longer adds any XMP to .heic, and for some reason Photos.app then fails to import the Caption in the legacy IFD0:ImageDescription tag (tested in Sequoia and Monterey). On the other hand, editing .heic in the mobile device adds some XMP tags:
exiftool -a -G1 -s -Software -ImageDescription -Description -XMP:All .
======== ./IMG_3313.HEIC
[IFD0] Software : 16.7.11
[IFD0] ImageDescription : qwerty
[XMP-dc] Description : qwerty
[XMP-x] XMPToolkit : XMP Core 6.0.0
[XMP-xmp] CreateDate : 2025:05:29 16:19:11
[XMP-xmp] CreatorTool : 16.7.11
[XMP-xmp] ModifyDate : 2025:05:29 16:19:11
[XMP-photoshop] DateCreated : 2025:05:29 16:19:11
[XMP-dc] Description : qwerty
======== ./IMG_0848_edited.heic
[IFD0] Software : 18.5
[IFD0] ImageDescription : qwerty
[XMP-x] XMPToolkit : XMP Core 6.0.0
[XMP-xmp] CreateDate : 2025:05:29 07:17:44
[XMP-xmp] CreatorTool : 18.5
[XMP-xmp] ModifyDate : 2025:05:29 07:17:44
[XMP-photoshop] DateCreated : 2025:05:29 07:17:44
======== ./IMG_0848.HEIC
[IFD0] Software : 18.5
[IFD0] ImageDescription : qwerty
If I add any XMP to the iOS/iPadOS 18 .heic, then Photos.app manages to import Caption from the IFD0:ImageDescription tag:
exiftool -P -overwrite_original -XMP-xmp:CreateDate='2025:05:29 07:17:44' IMG_0848.HEIC
exiftool -a -G1 -s -Software -ImageDescription -Description -XMP:All IMG_0848.HEIC
[IFD0] Software : 18.5
[IFD0] ImageDescription : qwerty
[XMP-x] XMPToolkit : Image::ExifTool 13.29
[XMP-xmp] CreateDate : 2025:05:29 07:17:44
So for some strange reason Photos.app needs some XMP tag so it can import IFD0:ImageDescription.
...an easier workaround would be to use GraphicConverter to re-apply the existing Caption -- by default GC reads IFD0:ImageDescription and copies it to XMP-dc:Description which Photos.app can import:
[XMP-dc] Description : qwerty