Skip to content

Photos macOS xcode27.0 b1

Alex Soto edited this page Jun 9, 2026 · 1 revision

#Photos.framework

diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAsset.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAsset.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAsset.h	2026-04-19 02:23:18
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAsset.h	2026-05-30 22:44:18
@@ -17,6 +17,7 @@
 @class PHFetchOptions;
 @class PHAssetCollection;
 
+
 NS_ASSUME_NONNULL_BEGIN
 API_AVAILABLE_BEGIN(macos(10.13), ios(8), tvos(10))
 
@@ -56,6 +57,9 @@
 
 @property (nonatomic, assign, readonly, getter=isFavorite) BOOL favorite;
 
+/// The rating of this PHAsset.
+@property (nonatomic, assign, readonly) PHAssetRating rating API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
+
 // deprecated, will always return NO for now.
 @property (nonatomic, assign, readonly, getter=isSyncFailureHidden) BOOL syncFailureHidden API_DEPRECATED("No longer supported", macos(10.14, 10.15)) API_UNAVAILABLE(ios, tvos, watchos);
 
@@ -68,6 +72,18 @@
 @property (nonatomic, assign, readonly) BOOL hasAdjustments API_AVAILABLE(macos(12), ios(15), tvos(15));
 // only applies to adjusted assets
 @property (nonatomic, copy, readonly, nullable) NSString *adjustmentFormatIdentifier API_AVAILABLE(macos(12), ios(15), tvos(15));
+
+@property (nonatomic, assign, readonly) PHOriginalResourceChoice originalResourceChoice API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
+
+
+
+@property (nonatomic, assign, readonly) PHAssetAdjustmentsState adjustmentsState API_AVAILABLE(macos(15), ios(18), tvos(18), visionos(2));
+
+/// The date when the asset was last edited.
+///
+/// If the asset has never been edited, then this property is nil.
+/// If the asset was edited and later reverted, such that hasAdjustments is false, then `adjustmentTimestamp` is the timestamp of the revert operation.
+@property (nonatomic, strong, readonly, nullable) NSDate *adjustmentTimestamp API_AVAILABLE(macos(15), ios(18), tvos(18), visionos(2));
 
 #pragma mark - Capabilities
 
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetChangeRequest.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetChangeRequest.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetChangeRequest.h	2026-04-19 02:23:18
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetChangeRequest.h	2026-05-30 23:04:31
@@ -42,11 +42,17 @@
 // This can be used to fetch the newly created asset after the change block has completed by using -localIdentifier
 // It can also be added directly to collections within the current change block
 @property (nonatomic, strong, readonly, nullable) PHObjectPlaceholder *placeholderForCreatedAsset;
+// The rating for this asset
+@property (nonatomic, assign, readwrite) PHAssetRating rating API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
 
+
+
 #pragma mark - Deleting Assets
 
 + (void)deleteAssets:(id<NSFastEnumeration>)assets;
 
+
+
 #pragma mark - Modifying Assets
 
 // if the asset does not allow the type of change requested, these methods will raise an exception, call canPerformEditOperation: on the asset to determine if the type of edit operation is allowed.
@@ -59,6 +65,13 @@
 // a hidden asset will be excluded from moment collections, but may still be included in other smart or regular album collections
 @property (nonatomic, assign, readwrite, getter=isHidden) BOOL hidden;
 
+/// Disable or enable the video part of a Live Photo so it just appears as a still image (disabled) or a Live Photo (enabled)
+///
+/// Applies to Live Photos only.
+- (void)setLivePhotoVideoPlaybackEnabled:(BOOL)enabled API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
+
+
+
 #pragma mark - Editing Asset Contents
 
 @property (nonatomic, strong, readwrite, nullable) PHContentEditingOutput *contentEditingOutput;
@@ -67,6 +80,11 @@
 // Use PHAssetResourceManager to ensure that original asset content is downloaded to the current device before making this request.
 - (void)revertAssetContentToOriginal;
 
+// The following applies to RAW+JPEG assets only.
+// In addition to reverting all adjustments,
+// this sets either the RAW (Raw) or JPEG (Compressed) as the source for renders.
+- (void)revertAssetContentToOriginalResourceChoice:(PHOriginalResourceChoice)choice API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
+
 @end
 
 
@@ -81,6 +99,14 @@
 // Used if data is not available locally and needs to be retrieved from iCloud.
 @property (nonatomic, assign, getter = isNetworkAccessAllowed) BOOL networkAccessAllowed;
 @property (nonatomic, copy, nullable) void (^progressHandler)(double progress, BOOL *stop);
+
+/// Set this value to `true` if you don't want a `displaySizeImage` on the `PHContentEditingInput`. This can give performance wins when the image will not be used.
+@property (nonatomic, assign) BOOL skipsDisplaySizeImage API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
+
+// If set, content editing input request will be executed as though the asset has the original
+// choice specified here.  Only impacts RAW+JPEG assets.  Only current use case is for
+// switching between R and J for R+J assets.  Setting this for RAW only assets may have unexpected effects.
+@property (nonatomic, assign) PHOriginalResourceChoice originalResourceChoice API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
 
 @end
 
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCollection.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCollection.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCollection.h	1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCollection.h	2026-05-30 23:04:31
@@ -0,0 +1,67 @@
+//
+//  PHAssetCollection.h
+//  Photos
+//
+//  Copyright (c) 2013-2025 Apple Inc. All rights reserved.
+//
+
+#import <Photos/PHCollection.h>
+#import <Photos/PhotosTypes.h>
+
+@class PHAsset, PHCollectionList, PHFetchResult, PHFetchOptions;
+@class CLLocation;
+
+NS_ASSUME_NONNULL_BEGIN
+API_AVAILABLE_BEGIN(macos(10.15), ios(8), tvos(10))
+
+OS_EXPORT API_AVAILABLE(macos(10.13))
+NS_SWIFT_SENDABLE
+@interface PHAssetCollection : PHCollection
+
+@property (nonatomic, assign, readonly) PHAssetCollectionType assetCollectionType;
+@property (nonatomic, assign, readonly) PHAssetCollectionSubtype assetCollectionSubtype;
+
+// These counts are just estimates; the actual count of objects returned from a fetch should be used if you care about accuracy. Returns NSNotFound if a count cannot be quickly returned.
+@property (nonatomic, assign, readonly) NSUInteger estimatedAssetCount;
+
+@property (nonatomic, strong, readonly, nullable) NSDate *startDate;
+@property (nonatomic, strong, readonly, nullable) NSDate *endDate;
+
+@property (nonatomic, strong, readonly, nullable) CLLocation *approximateLocation;
+@property (nonatomic, strong, readonly) NSArray<NSString *> *localizedLocationNames;
+
+
+#pragma mark - Fetching asset collections
+
+// Fetch asset collections of a single type matching the provided local identifiers (type is inferred from the local identifiers)
++ (PHFetchResult<PHAssetCollection *> *)fetchAssetCollectionsWithLocalIdentifiers:(NSArray<NSString *> *)identifiers options:(nullable PHFetchOptions *)options;
+
+// Fetch asset collections of a single type and subtype provided (use PHAssetCollectionSubtypeAny to match all subtypes)
++ (PHFetchResult<PHAssetCollection *> *)fetchAssetCollectionsWithType:(PHAssetCollectionType)type subtype:(PHAssetCollectionSubtype)subtype options:(nullable PHFetchOptions *)options;
+
+// Smart Albums are not supported, only Albums and Moments
++ (PHFetchResult<PHAssetCollection *> *)fetchAssetCollectionsContainingAsset:(PHAsset *)asset withType:(PHAssetCollectionType)type options:(nullable PHFetchOptions *)options;
+
+// assetGroupURLs are URLs retrieved from ALAssetGroup's ALAssetsGroupPropertyURL
++ (PHFetchResult<PHAssetCollection *> *)fetchAssetCollectionsWithALAssetGroupURLs:(NSArray<NSURL *> *)assetGroupURLs options:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release", ios(8,16), tvos(10,16), macos(10.15,13));
+
+
+#pragma mark - Fetching moment asset collections (Deprecated)
+
+
++ (PHFetchResult<PHAssetCollection *> *)fetchMomentsInMomentList:(PHCollectionList *)momentList options:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release", ios(8, 13), tvos(10, 13)) API_UNAVAILABLE(macos);
++ (PHFetchResult<PHAssetCollection *> *)fetchMomentsWithOptions:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release", ios(8, 13), tvos(10, 13)) API_UNAVAILABLE(macos);
+
+
+
+#pragma mark - Transient asset collections
+// These asset collections are only in-memory and are not persisted to disk
+
++ (PHAssetCollection *)transientAssetCollectionWithAssets:(NSArray<PHAsset *> *)assets title:(nullable NSString *)title;
++ (PHAssetCollection *)transientAssetCollectionWithAssetFetchResult:(PHFetchResult<PHAsset *> *)fetchResult title:(nullable NSString *)title;
+
+
+@end
+
+API_AVAILABLE_END
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCollectionChangeRequest.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCollectionChangeRequest.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCollectionChangeRequest.h	2026-04-19 02:23:18
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCollectionChangeRequest.h	2026-05-30 23:04:31
@@ -33,6 +33,8 @@
 // requests that the specified asset collections be deleted
 + (void)deleteAssetCollections:(id<NSFastEnumeration>)assetCollections;
 
+
+
 #pragma mark - Modifying Asset Collections
 
 // if the asset collection does not allow the type of change requested, these methods will raise an exception, call canPerformEditOperation: on the asset collection to determine if the type of edit operation is allowed.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCreationRequest.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCreationRequest.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCreationRequest.h	2026-04-19 02:23:19
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetCreationRequest.h	2026-05-30 23:04:31
@@ -35,6 +35,9 @@
 
 + (instancetype)creationRequestForAsset;
 
+// Allows setting the original resource choice during asset creation. Applies to RAW+JPEG assets only.
+@property (nonatomic, assign, readwrite) PHOriginalResourceChoice originalResourceChoice API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
+
 // Whether we support a given combination of PHAssetResourceTypes.
 // Note: Adding resources to a creation request always succeeds; validation of the request is performed later, and any errors are reported after the performChanges block.
 + (BOOL)supportsAssetResourceTypes:(NSArray<NSNumber *> *)types;
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResource.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResource.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResource.h	2026-04-19 02:23:19
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResource.h	2026-05-30 23:04:32
@@ -8,32 +8,55 @@
 #import <Photos/PhotosTypes.h>
 
 @class PHAsset;
+@class PHAssetResourceUploadJob;
 @class PHLivePhoto;
 @class UTType;
 
+
 NS_ASSUME_NONNULL_BEGIN
 API_AVAILABLE_BEGIN(macos(10.15), ios(9), tvos(10))
 
 OS_EXPORT
 @interface PHAssetResource : NSObject
 
+/// Describes the type of asset resource represented by this object, e.g. `photo`
 @property (nonatomic, assign, readonly) PHAssetResourceType type;
+
+/// The local identifier of the asset associated with this asset resource
 @property (nonatomic, copy, readonly) NSString *assetLocalIdentifier;
+
 @property (nonatomic, copy, readonly) NSString *originalFilename;
 
-/// The type of data associated with this asset resource (the data can be retrieved via PHAssetResourceManager)
+/// The content type of the data associated with this asset resource (the data can be retrieved via `PHAssetResourceManager`)
 @property (nonatomic, copy, readonly) UTType *contentType API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), visionos(26.0));
 @property (nonatomic, copy, readonly) NSString *uniformTypeIdentifier API_DEPRECATED("Use contentType instead", ios(9, API_TO_BE_DEPRECATED), macos(10.15, API_TO_BE_DEPRECATED), tvos(10, API_TO_BE_DEPRECATED), visionos(1, API_TO_BE_DEPRECATED));
 
 @property (nonatomic, assign, readonly) NSInteger pixelWidth API_AVAILABLE(macos(13), ios(16), tvos(16));
 @property (nonatomic, assign, readonly) NSInteger pixelHeight API_AVAILABLE(macos(13), ios(16), tvos(16));
 
+/// The size of the resource in bytes if known, `nil` if unavailable (may not be available until resource download/processing is complete)
+@property (nonatomic, copy, readonly, nullable) NSNumber *dataSize NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
+
 #pragma mark - Getting resources
 
+
 + (NSArray<PHAssetResource *> *)assetResourcesForAsset:(PHAsset *)asset;
 + (NSArray<PHAssetResource *> *)assetResourcesForLivePhoto:(PHLivePhoto *)livePhoto API_AVAILABLE(ios(9.1));
 
+
+/*!
+ Returns the asset resource associated with the given upload job.
+
+ - Parameters:
+ - job: the upload job whose associated asset resource is returned
+
+ - Returns: The asset resource associated with the upload job, or nil if the resource cannot be found.
+ */
++ (nullable PHAssetResource *)assetResourceForUploadJob:(PHAssetResourceUploadJob *)job NS_SWIFT_NAME(assetResource(forUploadJob:)) API_AVAILABLE(ios(27), macCatalyst(27), macos(27)) API_UNAVAILABLE(tvos, visionos, watchos);
+
 @end
 
 API_AVAILABLE_END
 NS_ASSUME_NONNULL_END
+
+
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResourceUploadJob.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResourceUploadJob.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResourceUploadJob.h	2026-04-19 02:23:19
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResourceUploadJob.h	2026-05-30 23:04:31
@@ -23,7 +23,7 @@
 ///
 /// The maximum number of jobs that can be in flight is limited to the ``jobLimit``. To make space for new jobs, you must call ``PHAssetResourceUploadJobChangeRequest/fetchJobsWithAction:options:`` and retry/acknowledge them with ``PHAssetResourceUploadJobChangeRequest/acknowledge:`` or ``PHAssetResourceUploadJobChangeRequest/retryWithDestination:`` respectively.
 NS_SWIFT_SENDABLE
-API_AVAILABLE(ios(26.1)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos, watchos)
+API_AVAILABLE(ios(26.1), macCatalyst(27.0), macos(27.0)) API_UNAVAILABLE(tvos, visionos, watchos)
 @interface PHAssetResourceUploadJob : PHObject
 
 /// The maximum number of unacknowledged upload jobs allowed.
@@ -32,7 +32,7 @@
 @property (class, readonly) NSInteger jobLimit;
 
 /// The asset resource this job promises to upload.
-@property (strong, readonly) PHAssetResource *resource;
+@property (strong, readonly) PHAssetResource *resource API_DEPRECATED("Use +[PHAssetResource assetResourceForUploadJob:] instead", ios(26.1, API_TO_BE_DEPRECATED)) API_UNAVAILABLE(macos, macCatalyst);
 
 /// The destination to send the job's resource.
 @property (strong, readonly) NSURLRequest *destination;
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResourceUploadJobChangeRequest.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResourceUploadJobChangeRequest.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResourceUploadJobChangeRequest.h	2026-04-18 21:10:51
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHAssetResourceUploadJobChangeRequest.h	2026-05-30 22:45:44
@@ -16,7 +16,7 @@
 /// When the extension's principal class receives a call to `process` background uploads, it can create new ``PHAssetResourceUploadJob``s through calls to perform changes on a PHPhotoLibrary using ``PHAssetResourceUploadJobChangeRequest`` and any in-flight upload jobs can be handled by updating their state to mark them as acknowledged, or to be retried. The maximum number of jobs that can be in flight is limited to the ``PHAssetResourceUploadJob.jobLimit``.
 ///
 /// ``PHAssetResourceUploadJobChangeRequest`` can only be created or used within a photo library change block. For details on change blocks, see ``PHPhotoLibrary``.
-API_AVAILABLE(ios(26.1)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos, watchos)
+API_AVAILABLE(ios(26.1), macCatalyst(27.0), macos(27.0)) API_UNAVAILABLE(tvos, visionos, watchos)
 @interface PHAssetResourceUploadJobChangeRequest : PHChangeRequest
 
 /// Creates an asset resource upload job.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCloudIdentifier.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCloudIdentifier.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCloudIdentifier.h	2026-04-18 23:23:52
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCloudIdentifier.h	2026-05-30 22:50:16
@@ -19,81 +19,107 @@
 /// DEPRECATED: If there is a failure to determine the global identifier for a local identifier, the notFoundIdentifier is provided in that array slot.
 @property (class, nonatomic, readonly) PHCloudIdentifier *notFoundIdentifier
 
-API_DEPRECATED_WITH_REPLACEMENT("Check for PHPhotosErrorIdentifierNotFound in PHCloudIdentifierMapping.error", macos(10.13, 12)) API_UNAVAILABLE(ios, macCatalyst, tvos);
+API_DEPRECATED("Check for PHPhotosErrorIdentifierNotFound in PHCloudIdentifierMapping.error", macos(10.13, 12)) API_UNAVAILABLE(ios, macCatalyst, tvos);
 
 
-/// For use in serialization
-@property (nonatomic, readonly) NSString *stringValue;
+/// Archival string can be used to serialize and deserialize the PHCloudIdentifier
+/// (Note the archival format is compatible with strings archived via the deprecated API `stringValue`)
+- (nullable instancetype)initWithArchivalStringValue:(NSString *)archivalString API_AVAILABLE(macos(15.2), ios(18.2), tvos(18.2), visionos(2.2));
+@property (nonatomic, readonly) NSString *archivalStringValue API_AVAILABLE(macos(15.2), ios(18.2), tvos(18.2), visionos(2.2));
 
-/// Deserialization
-- (instancetype)initWithStringValue:(NSString *)stringValue;
 
+- (instancetype)initWithStringValue:(NSString *)stringValue API_DEPRECATED("Use initWithArchivalStringValue: instead", macos(10.13, 27), ios(13, 27), tvos(13, 27), visionos(1, 27));
+@property (nonatomic, readonly) NSString *stringValue API_DEPRECATED_WITH_REPLACEMENT("archivalStringValue", macos(10.13, 27), ios(13, 27), tvos(13, 27), visionos(1, 27));
+
+
+
 @end
 
 API_AVAILABLE_END
 API_AVAILABLE_BEGIN(macos(12), ios(15), tvos(15))
-
-/// Contains the cloud identifier result from looking up a local identifier via \c cloudIdentifierMappingsForLocalIdentifiers, or an \c error indicating why the lookup failed
+/// Contains the cloud identifier result from looking up a local identifier via `cloudIdentifierMappingsForLocalIdentifiers`, or an `error` indicating why the lookup failed
 OS_EXPORT NS_REFINED_FOR_SWIFT
 NS_SWIFT_SENDABLE
 @interface PHCloudIdentifierMapping : NSObject
-/// The cloud identifier of the resource found for this local identifier
+/// The cloud identifier of the record found for this local identifier
 @property (nonatomic, readonly, nullable) PHCloudIdentifier *cloudIdentifier;
-/// error An error indicating why the \c cloudIdentifier is nil. \c PHPhotosErrorIdentifierNotFound if no resource could be found for the provided local identifier.
+/// An error indicating why the `cloudIdentifier` is `nil`. `PHPhotosErrorIdentifierNotFound` if no record could be found for the provided local identifier.
 @property (nonatomic, readonly, nullable) NSError *error;
 @end
 
-/// Contains the local identifier result from looking up a cloud identifier via \c localIdentifierMappingsForCloudIdentifiers, or an \c error indicating why the lookup failed
+/// Contains the local identifier result from looking up a cloud identifier via `localIdentifierMappingsForCloudIdentifiers`, or an `error` indicating why the lookup failed
 OS_EXPORT NS_REFINED_FOR_SWIFT
 NS_SWIFT_SENDABLE
 @interface PHLocalIdentifierMapping : NSObject
-/// The \c NSString representing the local identifier of the resource found for this cloud identifier, or nil if the match was not found.
+/// The `NSString` representing the local identifier of the record found for this cloud identifier, or nil if the match was not found.
 @property (nonatomic, readonly, nullable) NSString *localIdentifier;
-/// An error indicating why the \c localIdentifier is nil. \c PHPhotosErrorIdentifierNotFound if no resource could be found for the provided cloud identifier. \c PHPhotosErrorMultipleLocalIdentifiersFound if the cloud identifier matched more than one photo library resource, so there were multiple local identifiers found. The array of matching local identifiers can be retrieved from the error's user info via the \c PHLocalIdentifiersErrorKey
+/// An error indicating why the `localIdentifier` is `nil`. `PHPhotosErrorIdentifierNotFound` if no record could be found for the provided cloud identifier. `PHPhotosErrorMultipleLocalIdentifiersFound` if the cloud identifier matched more than one photo library record, so there were multiple local identifiers found. The array of matching local identifiers can be retrieved from the error's user info via the `PHLocalIdentifiersErrorKey`
 @property (nonatomic, readonly, nullable) NSError *error;
 @end
 
 @interface PHCloudIdentifier () <NSCopying>
 @end
-
 API_AVAILABLE_END
 
-API_AVAILABLE_BEGIN(macos(10.13), ios(15), tvos(15))
 
 
-@interface PHPhotoLibrary (CloudIdentifiers)
+#pragma mark - CloudIdentifiers
 
 
-/**
- @abstract Returns a dictionary that maps each cloud identifier from the provided array to a PLLocalIdentifierMapping result containing the local identifier found for that cloud identifier.
- @discussion This method can be very expensive so they should be used sparingly for batch lookup of all needed identifiers. Clients should work in terms of local identifiers and call these methods only once after loading from and before saving to persistent storage.  If the attempt to lookup a local identifier for a given cloud identifier fails, the error parameter will indicate the reason.
- @param cloudIdentifiers The array of \c PHCloudIdentifier instances whose local identifiers are to being requested.
+API_AVAILABLE_BEGIN(macos(10.13), ios(15), tvos(15))
+
+@interface PHPhotoLibrary (CloudIdentifiers)
+/*!
+ Returns a dictionary that maps each cloud identifier from the provided array to a `PHLocalIdentifierMapping` result containing the local identifier found for that cloud identifier.
+ 
+ This method can be very expensive so they should be used sparingly for batch lookup of all needed identifiers. Clients should work in terms of local identifiers and call these methods only once after loading from and before saving to persistent storage.  If the attempt to lookup a local identifier for a given cloud identifier fails, the error parameter will indicate the reason.
+ 
+ Note that cloud identifiers are designed to lookup local identifiers for records that are synced through iCloud Photo Library, but also support lookup in the following situations:
+ - looking up local identifiers with cloud identifiers generated from the same library, even if that library is not synced via iCloud Photo Library
+ - looking up PHAsset local identifiers based on media content matching if the cloud identifier hasn't synced to the device library, note that this can potentially map a cloud identifier to more than one local identifier if the cloud identifier hasn't synced and there are multiple PHAsset records with the same media content (see `PHPhotosErrorMultipleLocalIdentifiersFound`). To avoid using media matching as part of the mapping lookup strategy, use `localIdentifierMappingsForSyncedCloudIdentifiers:` instead.
+ 
+ - Parameters:
+ - cloudIdentifiers The array of `PHCloudIdentifier` instances whose local identifiers are being requested.
  */
 - (NSDictionary <PHCloudIdentifier *, PHLocalIdentifierMapping *> *)localIdentifierMappingsForCloudIdentifiers:(NSArray<PHCloudIdentifier *> *)cloudIdentifiers API_AVAILABLE(macos(12), ios(15), tvos(15)) NS_REFINED_FOR_SWIFT;
 
-/**
- @abstract Returns a dictionary that maps each local identifier from the provided array to a PLCloudIdentifierMapping result containing the cloud identifier found for that local identifier
- @discussion This method can be very expensive so they should be used sparingly for batch lookup of all needed identifiers. Clients should work in terms of local identifiers and call these methods only once after loading from and before saving to persistent storage.  If the attempt to lookup a cloud identifier for a given local identifier fails, the error parameter will indicate the reason.
- @param localIdentifiers The array of \c NSString instances whose cloud identifiers are to being requested.
+/*!
+ Returns a dictionary that maps each cloud identifier from the provided array to a `PHLocalIdentifierMapping` result containing the local identifier found for that cloud identifier if that cloud identifier is a known synced identifier.
+
+ This method can be very expensive so they should be used sparingly for batch lookup of all needed identifiers. Clients should work in terms of local identifiers and call these methods only once after loading from and before saving to persistent storage.  If the attempt to lookup a local identifier for a given cloud identifier fails, the error parameter will indicate the reason.
+ 
+ Use this method instead of `localIdentifierMappingsForCloudIdentifiers:` to avoid looking up PHAsset local identifiers based on the media content matching
+ 
+ - Parameters:
+ - cloudIdentifiers The array of `PHCloudIdentifier` instances whose local identifiers are being requested.
  */
+- (NSDictionary <PHCloudIdentifier *, PHLocalIdentifierMapping *> *)localIdentifierMappingsForSyncedCloudIdentifiers:(NSArray<PHCloudIdentifier *> *)cloudIdentifiers API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27)) NS_REFINED_FOR_SWIFT;
+
+/*!
+ Returns a dictionary that maps each local identifier from the provided array to a `PHCloudIdentifierMapping` result containing the cloud identifier found for that local identifier
+ 
+ This method can be very expensive so they should be used sparingly for batch lookup of all needed identifiers. Clients should work in terms of local identifiers and call these methods only once after loading from and before saving to persistent storage.  If the attempt to lookup a cloud identifier for a given local identifier fails, the error parameter will indicate the reason.
+ - Parameters:
+ - localIdentifiers The array of `NSString` instances whose cloud identifiers are being requested.
+ */
 - (NSDictionary <NSString *, PHCloudIdentifierMapping *> *)cloudIdentifierMappingsForLocalIdentifiers:(NSArray<NSString *> *)localIdentifiers API_AVAILABLE(macos(12), ios(15), tvos(15)) NS_REFINED_FOR_SWIFT;
 
 /// DEPRECATED: These two methods can be very expensive so they should be used sparingly for batch lookup of all needed identifiers. Clients should work in terms of local identifiers and call these methods only once after loading from and before saving to persistent storage.
 - (NSArray<NSString *> *)localIdentifiersForCloudIdentifiers:(NSArray<PHCloudIdentifier *> *)cloudIdentifiers
 
-API_DEPRECATED_WITH_REPLACEMENT("-localIdentifierMappingsForCloudIdentifiers:", macos(10.13, 12)) API_UNAVAILABLE(ios, macCatalyst, tvos);
+API_DEPRECATED("Use localIdentifierMappingsForCloudIdentifiers: instead", macos(10.13, 12)) API_UNAVAILABLE(ios, macCatalyst, tvos);
 
 - (NSArray<PHCloudIdentifier *> *)cloudIdentifiersForLocalIdentifiers:(NSArray<NSString *> *)localIdentifiers
 
-API_DEPRECATED_WITH_REPLACEMENT("-cloudIdentifierMappingsForLocalIdentifiers:", macos(10.13, 12)) API_UNAVAILABLE(ios, macCatalyst, tvos);
+API_DEPRECATED("Use cloudIdentifierMappingsForLocalIdentifiers: instead", macos(10.13, 12)) API_UNAVAILABLE(ios, macCatalyst, tvos);
 
 
 @end
 
-/// DEPRECATED: If the local object cannot be resolved from a global identifier, PHLocalIdentifierNotFound is provided in that array slot.
+/// DEPRECATED: If the local object cannot be resolved from a global identifier, `PHLocalIdentifierNotFound` is provided in that array slot.
 extern NSString * const PHLocalIdentifierNotFound
 
-API_DEPRECATED_WITH_REPLACEMENT("Check for PHPhotosErrorIdentifierNotFound in PHLocalIdentifierMapping.error", macos(10.13, 12)) API_UNAVAILABLE(ios, macCatalyst, tvos);
+API_DEPRECATED("Check for PHPhotosErrorIdentifierNotFound in PHLocalIdentifierMapping.error", macos(10.13, 12)) API_UNAVAILABLE(ios, macCatalyst, tvos);
 
 
 API_AVAILABLE_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollection.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollection.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollection.h	2026-04-19 02:23:18
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollection.h	2026-05-30 23:04:31
@@ -23,6 +23,9 @@
 @property (nonatomic, assign, readonly) BOOL canContainCollections;
 @property (nonatomic, strong, readonly, nullable) NSString *localizedTitle API_AVAILABLE(macos(10.13));
 
+/// The last date at which this collection was modified.
+@property (nonatomic, strong, readonly, nullable) NSDate *modificationDate API_AVAILABLE(macos(26), ios(26), tvos(26), visionos(26));
+
 #pragma mark - Capabilities
 
 - (BOOL)canPerformEditOperation:(PHCollectionEditOperation)anOperation;
@@ -35,100 +38,9 @@
 
 @end
 
-
-#pragma mark -
-OS_EXPORT API_AVAILABLE(macos(10.13))
-NS_SWIFT_SENDABLE
-@interface PHAssetCollection : PHCollection
-
-@property (nonatomic, assign, readonly) PHAssetCollectionType assetCollectionType;
-@property (nonatomic, assign, readonly) PHAssetCollectionSubtype assetCollectionSubtype;
-
-// These counts are just estimates; the actual count of objects returned from a fetch should be used if you care about accuracy. Returns NSNotFound if a count cannot be quickly returned.
-@property (nonatomic, assign, readonly) NSUInteger estimatedAssetCount;
-
-@property (nonatomic, strong, readonly, nullable) NSDate *startDate;
-@property (nonatomic, strong, readonly, nullable) NSDate *endDate;
-
-@property (nonatomic, strong, readonly, nullable) CLLocation *approximateLocation;
-@property (nonatomic, strong, readonly) NSArray<NSString *> *localizedLocationNames;
-
-
-#pragma mark - Fetching asset collections
-
-// Fetch asset collections of a single type matching the provided local identifiers (type is inferred from the local identifiers)
-+ (PHFetchResult<PHAssetCollection *> *)fetchAssetCollectionsWithLocalIdentifiers:(NSArray<NSString *> *)identifiers options:(nullable PHFetchOptions *)options;
-
-// Fetch asset collections of a single type and subtype provided (use PHAssetCollectionSubtypeAny to match all subtypes)
-+ (PHFetchResult<PHAssetCollection *> *)fetchAssetCollectionsWithType:(PHAssetCollectionType)type subtype:(PHAssetCollectionSubtype)subtype options:(nullable PHFetchOptions *)options;
-
-// Smart Albums are not supported, only Albums and Moments
-+ (PHFetchResult<PHAssetCollection *> *)fetchAssetCollectionsContainingAsset:(PHAsset *)asset withType:(PHAssetCollectionType)type options:(nullable PHFetchOptions *)options;
-
-// assetGroupURLs are URLs retrieved from ALAssetGroup's ALAssetsGroupPropertyURL
-+ (PHFetchResult<PHAssetCollection *> *)fetchAssetCollectionsWithALAssetGroupURLs:(NSArray<NSURL *> *)assetGroupURLs options:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release", ios(8,16), tvos(10,16), macos(10.15,13));
-
-
-#pragma mark - Fetching moment asset collections (Deprecated)
-
-
-+ (PHFetchResult<PHAssetCollection *> *)fetchMomentsInMomentList:(PHCollectionList *)momentList options:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release", ios(8, 13), tvos(10, 13)) API_UNAVAILABLE(macos);
-+ (PHFetchResult<PHAssetCollection *> *)fetchMomentsWithOptions:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release", ios(8, 13), tvos(10, 13)) API_UNAVAILABLE(macos);
-
-
-
-#pragma mark - Transient asset collections
-// These asset collections are only in-memory and are not persisted to disk
-
-+ (PHAssetCollection *)transientAssetCollectionWithAssets:(NSArray<PHAsset *> *)assets title:(nullable NSString *)title;
-+ (PHAssetCollection *)transientAssetCollectionWithAssetFetchResult:(PHFetchResult<PHAsset *> *)fetchResult title:(nullable NSString *)title;
-
-
-@end
-
-
-#pragma mark -
-OS_EXPORT API_AVAILABLE(macos(10.13))
-NS_SWIFT_SENDABLE
-@interface PHCollectionList : PHCollection
-
-@property (nonatomic, assign, readonly) PHCollectionListType collectionListType;
-@property (nonatomic, assign, readonly) PHCollectionListSubtype collectionListSubtype;
-
-@property (nonatomic, strong, readonly, nullable) NSDate *startDate;
-@property (nonatomic, strong, readonly, nullable) NSDate *endDate;
-
-@property (nonatomic, strong, readonly) NSArray<NSString *> *localizedLocationNames;
-
-
-#pragma mark - Fetching collection lists
-
-// A PHAssetCollectionTypeMoment will be contained by a PHCollectionListSubtypeMomentListCluster and a PHCollectionListSubtypeMomentListYear
-// Non-moment PHAssetCollections will only be contained by a single collection list
-+ (PHFetchResult<PHCollectionList *> *)fetchCollectionListsContainingCollection:(PHCollection *)collection options:(nullable PHFetchOptions *)options;
-
-// Fetch collection lists of a single type matching the provided local identifiers (type is inferred from the local identifiers)
-+ (PHFetchResult<PHCollectionList *> *)fetchCollectionListsWithLocalIdentifiers:(NSArray<NSString *> *)identifiers options:(nullable PHFetchOptions *)options;
-
-// Fetch asset collections of a single type and subtype provided (use PHCollectionListSubtypeAny to match all subtypes)
-+ (PHFetchResult<PHCollectionList *> *)fetchCollectionListsWithType:(PHCollectionListType)collectionListType subtype:(PHCollectionListSubtype)subtype options:(nullable PHFetchOptions *)options;
-
-
-#pragma mark - Fetching moment collection lists (Deprecated)
-
-
-+ (PHFetchResult<PHCollectionList *> *)fetchMomentListsWithSubtype:(PHCollectionListSubtype)momentListSubtype containingMoment:(PHAssetCollection *)moment options:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release", ios(8, 13), tvos(10, 13)) API_UNAVAILABLE(macos);
-+ (PHFetchResult<PHCollectionList *> *)fetchMomentListsWithSubtype:(PHCollectionListSubtype)momentListSubtype options:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release", ios(8, 13), tvos(10, 13)) API_UNAVAILABLE(macos);
-
-
-
-#pragma mark - Transient collection lists
-
-// These collection lists are only in-memory and are not persisted to disk
-+ (PHCollectionList *)transientCollectionListWithCollections:(NSArray<PHCollection *> *)collections title:(nullable NSString *)title;
-+ (PHCollectionList *)transientCollectionListWithCollectionsFetchResult:(PHFetchResult<PHCollection *> *)fetchResult title:(nullable NSString *)title;
-
-@end
-
 API_AVAILABLE_END
 NS_ASSUME_NONNULL_END
+
+// PHCollection subclasses declarations have been moved to their own header files, imported here for compatibility
+#import <Photos/PHAssetCollection.h>
+#import <Photos/PHCollectionList.h>
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollectionList.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollectionList.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollectionList.h	1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollectionList.h	2026-05-30 23:04:31
@@ -0,0 +1,59 @@
+//
+//  PHCollectionList.h
+//  Photos
+//
+//  Copyright (c) 2013-2025 Apple Inc. All rights reserved.
+//
+
+#import <Photos/PHCollection.h>
+#import <Photos/PhotosTypes.h>
+
+@class PHAssetCollection, PHFetchResult, PHFetchOptions;
+
+NS_ASSUME_NONNULL_BEGIN
+API_AVAILABLE_BEGIN(macos(10.15), ios(8), tvos(10))
+
+OS_EXPORT API_AVAILABLE(macos(10.13))
+NS_SWIFT_SENDABLE
+@interface PHCollectionList : PHCollection
+
+@property (nonatomic, assign, readonly) PHCollectionListType collectionListType;
+@property (nonatomic, assign, readonly) PHCollectionListSubtype collectionListSubtype;
+
+@property (nonatomic, strong, readonly, nullable) NSDate *startDate;
+@property (nonatomic, strong, readonly, nullable) NSDate *endDate;
+
+@property (nonatomic, strong, readonly) NSArray<NSString *> *localizedLocationNames;
+
+
+#pragma mark - Fetching collection lists
+
+// A PHAssetCollectionTypeMoment will be contained by a PHCollectionListSubtypeMomentListCluster and a PHCollectionListSubtypeMomentListYear
+// Non-moment PHAssetCollections will only be contained by a single collection list
++ (PHFetchResult<PHCollectionList *> *)fetchCollectionListsContainingCollection:(PHCollection *)collection options:(nullable PHFetchOptions *)options;
+
+// Fetch collection lists of a single type matching the provided local identifiers (type is inferred from the local identifiers)
++ (PHFetchResult<PHCollectionList *> *)fetchCollectionListsWithLocalIdentifiers:(NSArray<NSString *> *)identifiers options:(nullable PHFetchOptions *)options;
+
+// Fetch asset collections of a single type and subtype provided (use PHCollectionListSubtypeAny to match all subtypes)
++ (PHFetchResult<PHCollectionList *> *)fetchCollectionListsWithType:(PHCollectionListType)collectionListType subtype:(PHCollectionListSubtype)subtype options:(nullable PHFetchOptions *)options;
+
+
+#pragma mark - Fetching moment collection lists (Deprecated)
+
+
++ (PHFetchResult<PHCollectionList *> *)fetchMomentListsWithSubtype:(PHCollectionListSubtype)momentListSubtype containingMoment:(PHAssetCollection *)moment options:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release", ios(8, 13), tvos(10, 13)) API_UNAVAILABLE(macos);
++ (PHFetchResult<PHCollectionList *> *)fetchMomentListsWithSubtype:(PHCollectionListSubtype)momentListSubtype options:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release", ios(8, 13), tvos(10, 13)) API_UNAVAILABLE(macos);
+
+
+
+#pragma mark - Transient collection lists
+
+// These collection lists are only in-memory and are not persisted to disk
++ (PHCollectionList *)transientCollectionListWithCollections:(NSArray<PHCollection *> *)collections title:(nullable NSString *)title;
++ (PHCollectionList *)transientCollectionListWithCollectionsFetchResult:(PHFetchResult<PHCollection *> *)fetchResult title:(nullable NSString *)title;
+
+@end
+
+API_AVAILABLE_END
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollectionListChangeRequest.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollectionListChangeRequest.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollectionListChangeRequest.h	2026-04-19 02:23:18
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHCollectionListChangeRequest.h	2026-05-30 23:04:31
@@ -33,6 +33,7 @@
 // requests that the specified collection lists and all their child collections (recursively) be deleted
 + (void)deleteCollectionLists:(id<NSFastEnumeration>)collectionLists;
 
+
 #pragma mark - Modifying Collection Lists
 
 // if the collection list does not allow the type of change requested, these methods will raise an exception, call canPerformEditOperation: on the collection list to determine if the type of edit operation is allowed.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHFetchOptions.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHFetchOptions.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHFetchOptions.h	2026-04-19 02:23:19
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHFetchOptions.h	2026-05-30 23:04:31
@@ -37,6 +37,7 @@
 // Defaults to YES
 @property (nonatomic, assign) BOOL wantsIncrementalChangeDetails;
 
+
 @end
 
 API_AVAILABLE_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHImageManager.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHImageManager.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHImageManager.h	2026-04-19 02:23:19
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHImageManager.h	2026-05-30 23:04:31
@@ -64,6 +64,28 @@
 @property (nonatomic, copy, nullable) PHAssetImageProgressHandler progressHandler; // provide caller a way to be told how much progress has been made prior to delivering the data when it comes from iCloud. Defaults to nil, shall be set by caller
 @property (nonatomic) BOOL allowSecondaryDegradedImage API_AVAILABLE(macos(14), ios(17), tvos(17)); // in addition to the initial degraded result, an additional degraded result will be returned if conditions permit
 
+/// Request HDR image data if available (such as PQ/HLG formats).
+///
+/// When set to `YES`, the image manager will attempt to provide HDR image data if the asset contains HDR content.
+/// Defaults to `NO`.
+@property (nonatomic, assign) BOOL preferHDR API_AVAILABLE(macos(14), ios(17), tvos(17), visionos(1));
+
+/// Target HDR headroom for image rendering.
+///
+/// Specifies the target headroom value for HDR image rendering. Headroom represents the ratio between
+/// the maximum display brightness and standard dynamic range (SDR) white level.
+///
+/// - A headroom value of `0.0` means "headroom unknown". Images with unknown content headroom will be
+///   excluded from tone mapping, following CGImage documentation behavior.
+/// - Headroom values less than `0.0` or between `0.0` and `1.0` (exclusive) are undefined and will be
+///   clamped to `0.0` (unknown) rather than throwing an error.
+/// - Headroom is dependent on the current display capabilities. It is the responsibility of the caller
+///   to re-request the image if the display's headroom characteristics change. Swift view default behavior
+///   applies to views that use images outside of the current display headroom supported range.
+///
+/// Defaults to `1.0` (SDR, fully tone mapped).
+@property (nonatomic, assign) CGFloat targetHDRHeadroom API_AVAILABLE(macos(14), ios(17), tvos(17), visionos(1));
+
 @end
 
 API_AVAILABLE_END // macos(10.13), ios(8), tvos(10)
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHPhotoLibrary.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHPhotoLibrary.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHPhotoLibrary.h	2026-04-19 02:23:18
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PHPhotoLibrary.h	2026-05-30 22:50:17
@@ -16,6 +16,7 @@
 @class PHPersistentChangeToken;
 @class PHPersistentChangeFetchResult;
 
+
 typedef NS_ENUM(NSInteger, PHAuthorizationStatus) {
     PHAuthorizationStatusNotDetermined = 0, // User has not yet made a choice with regards to this application
     PHAuthorizationStatusRestricted,        // This application is not authorized to access photo data.
@@ -46,6 +47,13 @@
 - (void)photoLibraryDidBecomeUnavailable:(PHPhotoLibrary *)photoLibrary API_AVAILABLE(macos(10.15), ios(13), tvos(13));
 @end
 
+
+API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27))
+@protocol PHPhotoLibraryPersistentChangesObserver <NSObject>
+// This callback is invoked on an arbitrary serial queue. If you need this to be handled on a specific queue, you should redispatch appropriately
+- (void)photoLibraryPersistentChangesDidUpdate:(PHPhotoLibrary *)photoLibrary;
+@end
+
 /*!
  @class        PHPhotoLibrary
  @abstract     A PHPhotoLibrary provides access to the metadata and image data for the photos, videos and related content in the user's photo library, including content from the Camera Roll, iCloud Shared, Photo Stream, imported, and synced from iTunes.
@@ -68,7 +76,26 @@
 + (PHAuthorizationStatus)authorizationStatus API_DEPRECATED_WITH_REPLACEMENT("+authorizationStatusForAccessLevel:", ios(8, API_TO_BE_DEPRECATED), macos(10.13, API_TO_BE_DEPRECATED), tvos(10, API_TO_BE_DEPRECATED));
 + (void)requestAuthorization:(void(^)(PHAuthorizationStatus status))handler API_DEPRECATED_WITH_REPLACEMENT("+requestAuthorizationForAccessLevel:handler:", ios(8, API_TO_BE_DEPRECATED), macos(10.13, API_TO_BE_DEPRECATED), tvos(10, API_TO_BE_DEPRECATED));
 
+#pragma mark - Background Upload of Asset Resources: Feature and Extension Enablement
+ 
+/// A Boolean value that indicates whether background asset resource uploading is enabled.
+///
+/// The value is `true` if the extension is enabled and active, and is `false` otherwise.
+///
+/// The extension's host app uses this property to determine the background processing status. See ``PHAssetResourceUploadJob`` and ````PHAssetResourceUploadJobChangeRequest`` for more information.
+@property (readonly, getter=isUploadJobExtensionEnabled) BOOL uploadJobExtensionEnabled API_AVAILABLE(ios(26.1), macCatalyst(27.0), macos(27.0)) API_UNAVAILABLE(tvos, visionos, watchos) NS_SWIFT_NAME(uploadJobExtensionEnabled);
 
+/// Enables or disables the background asset resource upload job feature.
+///
+/// You must call this function before you create ``PHAssetResourceUploadJob`` in the extension's host application.
+///
+/// To enable background uploads, you must have both full library access and register the extension with the extension point: "com.apple.photos.background-upload".
+///
+/// - Parameters:
+///     - enable: `true` allows calls to the extension's host application; you can fulfill that protocol to create ``PHAssetResourceUploadJob`` objects. `false` stops calls to the extension's host application.
+///     - error: if either enabling or disabling was unsuccessful, `false` is returned and an error is set on the `error` parameter.
+- (BOOL)setUploadJobExtensionEnabled:(BOOL)enable error:(NSError * __autoreleasing *)error API_AVAILABLE(ios(26.1), macCatalyst(27.0), macos(27.0)) API_UNAVAILABLE(tvos, visionos, watchos);
+
 #pragma mark - Library availability
 
 @property (readonly, atomic, nullable, strong) NSError *unavailabilityReason API_AVAILABLE(macos(10.15), ios(13), tvos(13));
@@ -90,9 +117,24 @@
 
 #pragma mark - Change History
 
+/// Registers an observer to be notified when persistent changes occur in the photo library.
+///
+/// The observer is held weakly by the photo library. The observer's ``PHPhotoLibraryPersistentChangesObserver/photoLibraryPersistentChangesDidUpdate:`` method
+/// is called on an arbitrary serial queue when changes are committed to the photo library. Use
+/// ``fetchPersistentChangesSinceToken:error:`` to retrieve the specific changes.
+///
+/// Requires read-write photo library authorization (``PHAccessLevel/PHAccessLevelReadWrite``).
+- (void)registerPersistentChangesObserver:(id<PHPhotoLibraryPersistentChangesObserver>)observer API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
+
+/// Unregisters a previously registered persistent changes observer.
+///
+/// After calling this method, the observer will no longer receive persistent changes callbacks.
+- (void)unregisterPersistentChangesObserver:(id<PHPhotoLibraryPersistentChangesObserver>)observer API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
+
 - (nullable PHPersistentChangeFetchResult *)fetchPersistentChangesSinceToken:(PHPersistentChangeToken *)token error:(NSError **)error API_AVAILABLE(macos(13), ios(16), tvos(16));
 
 @property (nonatomic, readonly) PHPersistentChangeToken *currentChangeToken API_AVAILABLE(macos(13), ios(16), tvos(16));
+
 
 @end
 
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/Photos.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/Photos.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/Photos.h	2026-04-19 02:23:17
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/Photos.h	2026-05-30 23:04:30
@@ -14,8 +14,10 @@
 
 #import <Photos/PHObject.h>
 #import <Photos/PHAsset.h>
-#import <Photos/PHLivePhoto.h>
+#import <Photos/PHAssetCollection.h>
 #import <Photos/PHCollection.h>
+#import <Photos/PHCollectionList.h>
+#import <Photos/PHLivePhoto.h>
 
 #import <Photos/PHFetchOptions.h>
 #import <Photos/PHFetchResult.h>
@@ -41,6 +43,7 @@
 #import <Photos/PHAssetResourceManager.h>
 #import <Photos/PHAssetResource.h>
 
+
 #import <Photos/PHAdjustmentData.h>
 #import <Photos/PHContentEditingInput.h>
 #import <Photos/PHContentEditingOutput.h>
@@ -48,5 +51,6 @@
 #import <Photos/PHProject.h>
 #import <Photos/PHProjectChangeRequest.h>
 #import <Photos/PHCloudIdentifier.h>
+
 
 #endif
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PhotosTypes.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PhotosTypes.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PhotosTypes.h	2026-04-18 21:10:51
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Photos.framework/Headers/PhotosTypes.h	2026-05-30 22:36:24
@@ -146,6 +146,7 @@
     PHAssetMediaSubtypePhotoScreenshot API_AVAILABLE(ios(9)) = (1UL << 2),
     PHAssetMediaSubtypePhotoLive API_AVAILABLE(ios(9.1)) = (1UL << 3),
     PHAssetMediaSubtypePhotoDepthEffect API_AVAILABLE(macos(10.12.2), ios(10.2), tvos(10.1)) = (1UL << 4),
+    PHAssetMediaSubtypePhotoAnimation API_AVAILABLE(macos(10.15), ios(11), tvos(11), visionos(1)) = (1UL << 6),   /// The media subtype is a photo animation such as a GIF, animated PNGs, etc.
     PHAssetMediaSubtypeSpatialMedia API_AVAILABLE(macos(13), ios(16), tvos(16)) = (1UL << 10),
 
     // Video subtypes
@@ -163,6 +164,16 @@
     PHAssetBurstSelectionTypeUserPick = (1UL << 1),
 };
 
+// PHOriginalResourceChoice indicates which original resource an adjusted asset was generated from. In practice, this only really affects assets that have a RAW alternate.
+
+typedef NS_ENUM(NSInteger, PHOriginalResourceChoice) {
+    PHOriginalResourceChoiceCompressed = 0,
+    PHOriginalResourceChoiceRaw = 1,
+
+} NS_SWIFT_NAME(PHAsset.OriginalResourceChoice)
+API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
+
+
 typedef NS_OPTIONS(NSUInteger, PHAssetSourceType) {
     PHAssetSourceTypeNone            = 0,
     PHAssetSourceTypeUserLibrary     = (1UL << 0),
@@ -171,6 +182,16 @@
 
 } API_AVAILABLE(ios(9));
 
+
+typedef NS_ENUM(NSInteger, PHAssetAdjustmentsState) {
+    PHAssetAdjustmentsStateNone = 0,  // Asset has no adjustments applied
+
+
+
+    PHAssetAdjustmentsStateUserAdjusted = 2,  // Asset has a user adjustment applied
+    PHAssetAdjustmentsStateCameraAutoAdjusted = 3,  // Asset has a automatic Camera adjustment applied, no user adjustments
+} NS_SWIFT_NAME(PHAsset.AdjustmentsState) API_AVAILABLE(macos(15), ios(18), tvos(18), visionos(2));
+
 #pragma mark - PHAssetResourceType
 
 typedef NS_ENUM(NSInteger, PHAssetResourceType) {
@@ -189,8 +210,13 @@
 
     PHAssetResourceTypePhotoProxy API_AVAILABLE(macos(14), ios(17))= 19,
 
+
+
+
+
 } API_AVAILABLE(ios(9));
 
+
 #pragma mark - PHAssetResourceUploadJob types
 
 /// The states of an upload job.
@@ -204,9 +230,9 @@
     /// The job has sent over successfully.
     PHAssetResourceUploadJobStateSucceeded = 4,
     /// The job has been cancelled.
-    PHAssetResourceUploadJobStateCancelled API_AVAILABLE(ios(26.4)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos, watchos) = 5,
+    PHAssetResourceUploadJobStateCancelled API_AVAILABLE(ios(26.4)) = 5,
 
-} NS_SWIFT_NAME(PHAssetResourceUploadJob.State) API_AVAILABLE(ios(26.1)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos);
+} NS_SWIFT_NAME(PHAssetResourceUploadJob.State) API_AVAILABLE(ios(26.1), macCatalyst(27.0), macos(27.0)) API_UNAVAILABLE(tvos, visionos, watchos);
 
 
 /// The types of an upload job
@@ -215,7 +241,7 @@
     PHAssetResourceUploadJobTypeUpload = 0,
     /// A download job type (will download the resource from iCloud if required)
     PHAssetResourceUploadJobTypeDownloadOnly = 1,
-} NS_SWIFT_NAME(PHAssetResourceUploadJob.Type) API_AVAILABLE(ios(26.4)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos);
+} NS_SWIFT_NAME(PHAssetResourceUploadJob.Type) API_AVAILABLE(ios(26.4), macCatalyst(27.0), macos(27.0)) API_UNAVAILABLE(tvos, visionos, watchos);
 
 /// An action to perform on an upload job.
 ///
@@ -242,9 +268,17 @@
     ///
     /// A processable job has a ``PHAssetResourceUploadJob/state`` of `registered` or `pending`.
     PHAssetResourceUploadJobActionProcess API_AVAILABLE(ios(26.5)) = 3,
-} NS_SWIFT_NAME(PHAssetResourceUploadJob.Action) API_AVAILABLE(ios(26.1)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos);
+} NS_SWIFT_NAME(PHAssetResourceUploadJob.Action) API_AVAILABLE(ios(26.1), macCatalyst(27.0), macos(27.0)) API_UNAVAILABLE(tvos, visionos, watchos);
 
-API_AVAILABLE_END
+/// Describes a rating for an asset.
+typedef NS_ENUM(NSInteger, PHAssetRating) {
+    PHAssetRatingUnset = 0,
+    PHAssetRatingOne,
+    PHAssetRatingTwo,
+    PHAssetRatingThree,
+    PHAssetRatingFour,
+    PHAssetRatingFive
+} NS_SWIFT_NAME(PHAsset.Rating) API_AVAILABLE(macos(27), ios(27), tvos(27), visionos(27));
 
 #pragma mark - PHObjectTypes
 
@@ -253,5 +287,7 @@
     PHObjectTypeAssetCollection      = 2,
     PHObjectTypeCollectionList       = 3,
 } API_AVAILABLE(macos(13), ios(16), tvos(16));
+
+API_AVAILABLE_END
 
 #endif

Clone this wiki locally