Skip to content

CloudKit tvOS xcode26.0 b1

Rolf Bjarne Kvinge edited this page Jun 20, 2025 · 2 revisions

#CloudKit.framework

diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAllowedSharingOptions.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAllowedSharingOptions.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAllowedSharingOptions.h	2025-04-19 04:15:34
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAllowedSharingOptions.h	2025-05-25 02:08:39
@@ -43,11 +43,18 @@
 @property (assign) CKSharingParticipantPermissionOption allowedParticipantPermissionOptions;
 @property (assign) CKSharingParticipantAccessOption allowedParticipantAccessOptions;
 
+/// Defaults to `NO`. If set, the system sharing UI will allow the user to choose whether added participants can invite others to the share.
+/// Shares with ``.administrator`` participants will be returned as read-only to devices running OS versions prior to the ``.administrator`` role being introduced. The ``.administrator`` participants on these read-only shares will be returned as ``.privateUser``.
+@property (assign) BOOL allowsParticipantsToInviteOthers API_AVAILABLE(macos(26.0), ios(26.0), visionos(26.0)) API_UNAVAILABLE(tvos, watchos);
 /*!
  Standard allowed options are most permissive i.e. @c allowedParticipantPermissionOptions = @c CKSharingParticipantPermissionOptionAny
  and @c allowedParticipantAccessOptions = @c CKSharingParticipantAccessOptionAny
  */
 @property (class, readonly, strong, nonatomic) CKAllowedSharingOptions *standardOptions;
+
+/// Default value is `NO`. If set, the system sharing UI will allow the user to configure whether access requests are enabled on the share.
+@property (assign) BOOL allowsAccessRequests API_AVAILABLE(macos(26.0), ios(26.0), visionos(26.0)) API_UNAVAILABLE(tvos, watchos);
+
 @end
 
 NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h	2025-05-03 21:59:05
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h	2025-05-30 23:54:52
@@ -134,7 +134,7 @@
     CKApplicationPermissionStatusGranted               = 3,
 } API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.10, 14.0), ios(8.0, 17.0), tvos(9.0, 17.0), watchos(3.0, 10.0));
 
-typedef void(^CKApplicationPermissionBlock)(CKApplicationPermissionStatus applicationPermissionStatus, NSError * _Nullable error) API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.10, 14.0), ios(8.0, 17.0), tvos(9.0, 17.0), watchos(3.0, 10.0));
+typedef void (^CKApplicationPermissionBlock)(CKApplicationPermissionStatus applicationPermissionStatus, NSError * _Nullable error) API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.10, 14.0), ios(8.0, 17.0), tvos(9.0, 17.0), watchos(3.0, 10.0));
 
 @interface CKContainer (ApplicationPermission)
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h	2025-04-19 04:15:34
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h	2025-05-25 02:53:29
@@ -37,13 +37,13 @@
  */
 @interface CKDatabase (ConvenienceMethods)
 
-#pragma mark Record Convenience Methods
+#pragma mark - Record Convenience Methods
 /*! @c CKFetchRecordsOperation and @c CKModifyRecordsOperation are the more configurable, @c CKOperation -based alternatives to these methods */
 - (void)fetchRecordWithID:(CKRecordID *)recordID completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKRecord * _Nullable record, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(record(for:));
 - (void)saveRecord:(CKRecord *)record completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKRecord * _Nullable record, NSError * _Nullable error))completionHandler;
 - (void)deleteRecordWithID:(CKRecordID *)recordID completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKRecordID * _Nullable recordID, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(deleteRecord(withID:));
 
-#pragma mark Query Convenience Method
+#pragma mark - Query Convenience Method
 /*! @discussion @c CKQueryOperation is the more configurable, @c CKOperation -based alternative to this method
  *  Queries can potentially return a large number of records, and the server will return those records in batches. This convenience API will only fetch the first batch of results (equivalent to using @c CKQueryOperationMaximumResults).
  *  If you would like to fetch all results, use @c CKQueryOperation and its @c CKQueryCursor instead.
@@ -53,14 +53,14 @@
 - (void)performQuery:(CKQuery *)query inZoneWithID:(nullable CKRecordZoneID *)zoneID completionHandler:(void (NS_SWIFT_SENDABLE ^)(NSArray<CKRecord *> * _Nullable results, NSError * _Nullable error))completionHandler
 CK_SWIFT_DEPRECATED("renamed to fetch(withQuery:inZoneWith:desiredKeys:resultsLimit:completionHandler:)", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0));
 
-#pragma mark Record Zone Convenience Methods
+#pragma mark - Record Zone Convenience Methods
 /*! @c CKFetchRecordZonesOperation and @c CKModifyRecordZonesOperation are the more configurable, @c CKOperation -based alternatives to these methods */
 - (void)fetchAllRecordZonesWithCompletionHandler:(void (NS_SWIFT_SENDABLE ^)(NSArray<CKRecordZone *> * _Nullable zones, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(allRecordZones());
 - (void)fetchRecordZoneWithID:(CKRecordZoneID *)zoneID completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKRecordZone * _Nullable zone, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(recordZone(for:));
 - (void)saveRecordZone:(CKRecordZone *)zone completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKRecordZone * _Nullable zone, NSError * _Nullable error))completionHandler;
 - (void)deleteRecordZoneWithID:(CKRecordZoneID *)zoneID completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKRecordZoneID * _Nullable zoneID, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(deleteRecordZone(withID:));
 
-#pragma mark Subscription Convenience Methods
+#pragma mark - Subscription Convenience Methods
 /*! @c CKFetchSubscriptionsOperation and @c CKModifySubscriptionsOperation are the more configurable, @c CKOperation -based alternative to these methods */
 - (void)fetchSubscriptionWithID:(CKSubscriptionID)subscriptionID completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKSubscription * _Nullable subscription, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0), watchos(6.0)) NS_REFINED_FOR_SWIFT_ASYNC(2);
 - (void)fetchAllSubscriptionsWithCompletionHandler:(void (NS_SWIFT_SENDABLE ^)(NSArray<CKSubscription *> * _Nullable subscriptions, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0), watchos(6.0)) NS_SWIFT_ASYNC_NAME(allSubscriptions());
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h	2025-04-19 04:15:34
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h	2025-05-25 02:08:40
@@ -43,6 +43,14 @@
     #define CK_SUBCLASSING_RESTRICTED __attribute__((__objc_subclassing_restricted__))
 #endif
 
+#ifndef CK_SUBCLASSING_EXTERNALLY_RESTRICTED
+    #if defined(CK_BUILDING_CK)
+        #define CK_SUBCLASSING_EXTERNALLY_RESTRICTED
+    #else
+        #define CK_SUBCLASSING_EXTERNALLY_RESTRICTED __attribute__((__objc_subclassing_restricted__))
+    #endif
+#endif
+
 
 #ifndef CK_SUBCLASSING_DEPRECATED
     #define CK_SUBCLASSING_DEPRECATED // we can't actually emit a warning, but heed this annotation anyway!
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKError.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKError.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKError.h	2025-05-03 21:59:04
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKError.h	2025-05-25 02:54:58
@@ -165,6 +165,9 @@
     /*! The current account is in a state that may need user intervention to recover from. The user should be directed to check the Settings app. Listen for CKAccountChangedNotifications to know when to re-check account status and retry. */
     CKErrorAccountTemporarilyUnavailable  API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0)) = 36,
     
+    /// The user is already an invited participant on this share. They must accept the existing share invitation before continuing.
+    CKErrorParticipantAlreadyInvited      API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), watchos(26.0), visionos(26.0)) = 37,
+    
 
 };
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h	2025-05-03 22:04:42
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h	2025-05-25 02:08:39
@@ -22,29 +22,29 @@
 @end
 
 typedef NS_ENUM(NSInteger, CKNotificationType) {
-    /// Generated by `CKQuerySubscription`s
+    /// Generated by ``CKQuerySubscription``s
     CKNotificationTypeQuery            = 1,
 
-    /// Generated by `CKRecordZoneSubscription`s
+    /// Generated by ``CKRecordZoneSubscription``s
     CKNotificationTypeRecordZone       = 2,
 
     /// Indicates a notification that a client had previously marked as read
     CKNotificationTypeReadNotification = 3,
 
-    /// Generated by `CKDatabaseSubscription`s
+    /// Generated by ``CKDatabaseSubscription``s
     CKNotificationTypeDatabase         API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) = 4,
 } API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 /// Pushes from CloudKit servers contain both CloudKit-specific and APS-specific information.
 /// APS-specific information includes elements like alerts, badges, sounds, categories, etc.
 /// When receiving a push from CloudKit servers, the push may be delivered via multiple API flows.
-/// The flow(s) chosen will depend on the type of push requested (e.g. via the `CKSubscription`
+/// The flow(s) chosen will depend on the type of push requested (e.g. via the ``CKSubscription``
 /// that triggered it and its configured `notificationInfo`).
 ///
 /// Pushes with UI elements (alerts, badges, sounds):
 /// These pushes are delivered via the `UserNotifications` framework, in the form of a `UNNotification`
 /// Applications should use the `UserNotifications` framework to interact with the UI elements of this push.
-/// Applications may create a `CKNotification` from a `UNNotification` in their `UNUserNotificationCenterDelegate`:
+/// Applications may create a ``CKNotification`` from a `UNNotification` in their `UNUserNotificationCenterDelegate`:
 ///
 ///     func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification) async -> UNNotificationPresentationOptions {
 ///         let ckNotification = CKNotification(fromRemoteNotificationDictionary: notification.request.content.userInfo)
@@ -55,7 +55,7 @@
 /// For example: `UIApplicationDelegate.application(_:didReceiveRemoteNotification:) async`
 /// Applications do not need to interact with any UI element in the push payload argument, that's intended to be handled via the `UserNotifications` flow
 /// (a push with both UI elements and `content-available` will be delivered via both API flows)
-/// Applications may create a `CKNotification` from the remote notification in their `UIApplicationDelegate`:
+/// Applications may create a ``CKNotification`` from the remote notification in their `UIApplicationDelegate`:
 ///
 ///     func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) async -> UIBackgroundFetchResult {
 ///         let ckNotification = CKNotification(fromRemoteNotificationDictionary: userInfo)
@@ -70,7 +70,7 @@
 
 + (nullable instancetype)notificationFromRemoteNotificationDictionary:(NSDictionary *)notificationDictionary;
 
-/// When you instantiate a `CKNotification` from a remote notification dictionary, you will get back a concrete
+/// When you instantiate a ``CKNotification`` from a remote notification dictionary, you will get back a concrete
 /// subclass defined below.  Use `notificationType` to avoid `as?` or `-isKindOfClass:` checks.
 @property (readonly, assign, nonatomic) CKNotificationType notificationType;
 
@@ -83,9 +83,9 @@
 
 /// Whether or not the notification fully represents what the server wanted to send.
 ///
-/// Push notifications have a limited size.  In some cases, CloudKit servers may not be able to send you a full `CKNotification`'s worth of info in one push.
+/// Push notifications have a limited size.  In some cases, CloudKit servers may not be able to send you a full ``CKNotification``'s worth of info in one push.
 /// In those cases, `isPruned` returns `true`.
-/// The order in which properties are dropped from a push notification is defined in each `CKNotification` subclass below.
+/// The order in which properties are dropped from a push notification is defined in each ``CKNotification`` subclass below.
 @property (readonly, assign, nonatomic) BOOL isPruned;
 
 /// The ID of the subscription that caused this notification to fire.
@@ -118,7 +118,7 @@
     CKQueryNotificationReasonRecordDeleted,
 } API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
-/// A notification generated by a `CKQuerySubscription`
+/// A notification generated by a ``CKQuerySubscription``
 ///
 /// `notificationType` == `.query`
 /// When properties must be dropped (see @c isPruned), here's the order of importance.  The most important properties are first, they'll be the last ones to be dropped.
@@ -161,7 +161,7 @@
 @end
 
 
-/// A notification generated by a `CKRecordZoneSubscription`
+/// A notification generated by a ``CKRecordZoneSubscription``
 ///
 /// `notificationType` == `.recordZone`
 /// When properties must be dropped (see @c isPruned), here's the order of importance.  The most important properties are first, they'll be the last ones to be dropped.
@@ -195,7 +195,7 @@
 @end
 
 
-/// A notification generated by a `CKDatabaseSubscription`
+/// A notification generated by a ``CKDatabaseSubscription``
 ///
 /// `notificationType` == `.database`
 /// When properties must be dropped (see @c isPruned), here's the order of importance.  The most important properties are first, they'll be the last ones to be dropped.
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h	2025-04-19 03:56:44
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h	2025-05-25 08:18:55
@@ -49,7 +49,7 @@
 API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
 CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
-@interface CKOperationGroup : NSObject <NSSecureCoding>
+@interface CKOperationGroup : NSObject <NSSecureCoding, NSCopying>
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
 - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h	2025-05-03 20:34:59
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h	2025-05-30 23:54:51
@@ -23,15 +23,15 @@
 /*! Use this constant for the recordType parameter when fetching User Records. */
 CK_EXTERN CKRecordType const CKRecordTypeUserRecord API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
-/*! For use in queries to match on record properties.  Matches `record.recordID`.  Value is a `CKRecordID` */
+/*! For use in queries to match on record properties.  Matches `record.recordID`.  Value is a ``CKRecordID`` */
 CK_EXTERN CKRecordFieldKey const CKRecordRecordIDKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
 
-/*! For use in queries to match on record properties.  Matches `record.creatorUserRecordID`.  Value is a `CKRecordID` */
+/*! For use in queries to match on record properties.  Matches `record.creatorUserRecordID`.  Value is a ``CKRecordID`` */
 CK_EXTERN CKRecordFieldKey const CKRecordCreatorUserRecordIDKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
 /*! For use in queries to match on record properties.  Matches `record.creationDate`.  Value is a `NSDate` */
 CK_EXTERN CKRecordFieldKey const CKRecordCreationDateKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
 
-/*! For use in queries to match on record properties.  Matches `record.lastModifiedUserRecordID`.  Value is a `CKRecordID` */
+/*! For use in queries to match on record properties.  Matches `record.lastModifiedUserRecordID`.  Value is a ``CKRecordID`` */
 CK_EXTERN CKRecordFieldKey const CKRecordLastModifiedUserRecordIDKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
 /*! For use in queries to match on record properties.  Matches `record.modificationDate`.  Value is a `NSDate` */
 CK_EXTERN CKRecordFieldKey const CKRecordModificationDateKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h	2025-04-19 04:15:33
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h	2025-05-25 02:05:57
@@ -14,16 +14,36 @@
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 typedef NS_OPTIONS(NSUInteger, CKRecordZoneCapabilities) {
-    /*! This zone supports CKFetchRecordChangesOperation */
+    /// This zone supports `CKFetchRecordZoneChangesOperation`
     CKRecordZoneCapabilityFetchChanges   = 1 << 0,
-    /*! Batched changes to this zone happen atomically */
+    /// Batched changes to this zone happen atomically
     CKRecordZoneCapabilityAtomic         = 1 << 1,
-    /*! Records in this zone can be shared */
+    /// Records in this zone can be shared
     CKRecordZoneCapabilitySharing        API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0)) = 1 << 2,
-    /*! This zone supports a single CKShare record that shares all records in the zone */
+    /// This zone supports a single `CKShare` record that shares all records in the zone
     CKRecordZoneCapabilityZoneWideSharing API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0)) = 1 << 3,
 } API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
+API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), watchos(26.0), visionos(26.0))
+typedef NS_ENUM(NSInteger, CKRecordZoneEncryptionScope) {
+    /// Zone uses per-record encryption keys for any encrypted values on a record or share.
+    ///
+    /// This is the default encryption scope for a record zone.
+    CKRecordZoneEncryptionScopePerRecord,
+
+    /// Zone uses per-zone encryption keys for encrypted values across all records and the zone-wide share, if present.
+    ///
+    /// This is an optional optimization that can reduce the overall storage used by encryption keys in a zone.
+    /// Note that:
+    /// - Record zones using per-zone encryption only support zone-wide sharing.
+    /// - Encryption scope can only be assigned at zone creation and cannot be changed for the lifetime of the zone.
+    /// - The server will not return zones using per-zone encryption to device OS versions older than the corresponding API availability version.
+    /// - An older OS trying to overwrite an existing zone using per-zone encryption due to a naming collision will result in a `.serverRejectedRequest` error.
+    /// - On device OS upgrade, your application is responsible for fetching database changes via `CKFetchDatabaseChangesOperation` with a nil sync token to ensure it has
+    /// received all the zones available to it from the server.
+    CKRecordZoneEncryptionScopePerZone,
+};
+
 CK_EXTERN NSString * const CKRecordZoneDefaultName API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
@@ -40,18 +60,25 @@
 
 @property (readonly, copy) CKRecordZoneID *zoneID;
 
-/*! Capabilities on locally-created record zones are not valid until the record zone is saved. Capabilities on record zones fetched from the server are valid. */
+/// Capabilities on locally-created record zones are not valid until the record zone is saved. Capabilities on record zones fetched from the server are valid.
 @property (readonly, assign) CKRecordZoneCapabilities capabilities;
 
-/*! @discussion The share property on a record zone will only be set on zones fetched from the server and only if a
- * corresponding zone-wide share record for the zone exists on the server.
- *
- *  You can create a zone-wide share for a zone using @code -[CKShare initWithRecordZoneID:] @endcode.
- *
- *  Zone-wide sharing is only supported in zones with the @c CKRecordZoneCapabilityZoneWideSharing sharing capability.
- *  You cannot share a zone if it already contains shared records.
- */
+/// The share property on a record zone will only be set on zones fetched from the server and only if a
+/// corresponding zone-wide share record for the zone exists on the server.
+///
+/// You can create a zone-wide share for a zone using `-[CKShare initWithRecordZoneID:]`.
+///
+/// Zone-wide sharing is only supported in zones with the `CKRecordZoneCapabilityZoneWideSharing` sharing capability.
+/// You cannot share a zone if it already contains shared records.
 @property (nullable, readonly, copy) CKReference *share API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/// The encryption scope determines the granularity at which encryption keys are stored within the zone.
+///
+/// Zone encryption scope defaults to `CKRecordZoneEncryptionScopePerRecord` and can only be modified before zone creation. Attempting to change the encryption
+/// scope of an existing zone is invalid and will result in an error.
+///
+/// Zones using `CKRecordZoneEncryptionScopePerZone` can only use zone-wide sharing and are not compatible with older device OS versions. Refer to `CKRecordZoneEncryptionScope` for more info.
+@property (assign) CKRecordZoneEncryptionScope encryptionScope API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), watchos(26.0), visionos(26.0));
 
 @end
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h	2025-04-19 03:55:35
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h	2025-05-25 02:08:39
@@ -10,6 +10,12 @@
 #import <CloudKit/CKRecord.h>
 #import <CloudKit/CKShareParticipant.h>
 
+
+#define CKSHARE_REQUEST_ACCESS_INTERFACES_AVAILABILITY API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), watchos(26.0), visionos(26.0))
+
+
+@class CKShareAccessRequester, CKShareBlockedIdentity, CKUserIdentityLookupInfo;
+
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 CK_EXTERN CKRecordType const CKRecordTypeShare API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
@@ -85,22 +91,92 @@
 @property (nullable, readonly, copy) CKShareParticipant *currentUserParticipant;
 
 /*! @discussion If a participant with a matching userIdentity already exists, then that existing participant's properties will be updated; no new participant will be added.
- *  A `CKShareParticipant` instance that has already been added to one `CKShare` cannot be added to another, unless it is removed from the first `CKShare` through `removeParticipant`.
+ *  A ``CKShareParticipant`` instance that has already been added to one ``CKShare`` cannot be added to another, unless it is removed from the first ``CKShare`` through `removeParticipant`.
  *  In order to modify the list of participants, a share must have publicPermission set to @c CKShareParticipantPermissionNone.  That is, you cannot mix-and-match private users and public users in the same share.
  *  @see CKShareParticipantRole
  */
 - (void)addParticipant:(CKShareParticipant *)participant;
 
-/*! @discussion It's not allowed to call `removeParticipant` on a `CKShare` with a `CKShareParticipant` that has never been added to that share through `addParticipant`.
+/*! @discussion It's not allowed to call `removeParticipant` on a ``CKShare`` with a ``CKShareParticipant`` that has never been added to that share through `addParticipant`.
  */
 - (void)removeParticipant:(CKShareParticipant *)participant;
 
+/*! @abstract Invitation URLs that can be used by any receiver to claim the associated participantID and join the share.
+ *
+ *  @discussion Only available after share record has been saved to the server for participants created via `+[CKShareParticipant oneTimeURLParticipant]`.
+ *  One-time URLs are stable, and tied to the associated participantIDs as long as the participant is part of the share.
+ *  Typically, a recipient user invited via their handle (i.e. `.acceptanceStatus` == `.pending`) is provided a `CKShare.URL` directly by the share's owner. However, any user can also use a `oneTimeURL` in the same manner by fetching share metadata and accepting the share.
+ *  After share acceptance, the `oneTimeURL` becomes functionally equivalent to the regular `CKShare.URL`.
+ */
+- (nullable NSURL *)oneTimeURLForParticipantID:(NSString *)participantID API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0)) NS_REFINED_FOR_SWIFT;
+
 /*! These superclass-provided initializers are not allowed for CKShare */
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
 - (instancetype)initWithRecordType:(CKRecordType)recordType NS_UNAVAILABLE;
 - (instancetype)initWithRecordType:(CKRecordType)recordType recordID:(CKRecordID *)recordID NS_UNAVAILABLE;
 - (instancetype)initWithRecordType:(CKRecordType)recordType zoneID:(CKRecordZoneID *)zoneID NS_UNAVAILABLE;
+
+/// A list of all uninvited users who have requested access to this share.
+///
+/// When share access requests are allowed, uninvited users can attempt to join the share
+/// by sending an access request. Those pending requests appear in this array.
+/// Share owners or administrators can approve the requester or use ``denyRequesters(_:)`` to respond
+/// to these access requests. Requesters are always returned with name components and either an email or phone number.
+/// Requesters can be approved by running ``CKFetchShareParticipantsOperation`` with the requester's ``CKShareAccessRequester/participantLookupInfo``
+/// and adding the resulting participant to the share.
+@property (readonly, copy) NSArray<CKShareAccessRequester *> *requesters CKSHARE_REQUEST_ACCESS_INTERFACES_AVAILABILITY;
+
+/// A list of users blocked from requesting access to this share.
+///
+/// Identities remain in this list until a user calls ``unblockIdentities(_:)``.
+@property (readonly, copy) NSArray<CKShareBlockedIdentity *> *blockedIdentities CKSHARE_REQUEST_ACCESS_INTERFACES_AVAILABILITY;
+
+/// Indicates whether uninvited users can request access to this share.
+///
+/// By default, allows access requests is `NO`
+/// When `YES`, uninvited users can submit an access request to the share
+/// if they discover the share URL. When `NO`, the server does not allow uninvited users
+/// to request access and does not reveal whether the share exists. This property can only be
+/// modified by the share owner or an admin. Attempting to change its value as any other
+/// participant will result in an exception.
+@property (readwrite, assign) BOOL allowsAccessRequests CKSHARE_REQUEST_ACCESS_INTERFACES_AVAILABILITY;
+
+/// Denies share access to the specified requesters.
+///
+/// Use this method to reject pending requests from one or more uninvited users.
+/// Denied requesters are removed from the ``requesters`` array.
+/// You must save the share to the server after denying to persist the changes.
+/// Once saved, these requesters are not given access to the share, but they may attempt to request
+/// access again unless you block them. This method can only be used by the share owner or an
+/// admin. Attempting to use it as any other participant will result in an exception.
+///
+/// - Parameters:
+///   - requesters: An array of ``CKShareAccessRequester`` objects to deny.
+- (void)denyRequesters:(NSArray<CKShareAccessRequester *> *)requesters CKSHARE_REQUEST_ACCESS_INTERFACES_AVAILABILITY;
+
+/// Blocks the specified requesters from requesting access to this share.
+///
+/// This method permanently prevents the listed requesters from requesting access to the share in the future.
+/// Blocked requesters appear in the ``blockedIdentities`` array.
+/// The share must be saved to the server after blocking to persist the changes. This method can only be used
+/// by the share owner or an admin. Attempting to use it as any other participant will result in an exception.
+/// Blocking an existing participant removes the participant from the share.
+///
+/// - Parameters:
+///   - requesters: An array of ``CKShareAccessRequester`` objects to block.
+- (void)blockRequesters:(NSArray<CKShareAccessRequester *> *)requesters CKSHARE_REQUEST_ACCESS_INTERFACES_AVAILABILITY;
+
+/// Unblocks previously blocked identities, allowing them to request access again.
+///
+/// Call this method to remove the specified identities from the ``blockedIdentities`` array.
+/// Once unblocked, those identities are free to request access to the share unless access
+/// requests are disabled. You must save the share to commit this change to the server.
+/// This method can only be used by the share owner or an admin. Attempting to use it as any
+/// other participant will result in an exception.
+///
+/// - Parameter blockedIdentities: An array of ``CKShareBlockedIdentity`` objects to unblock.
+- (void)unblockIdentities:(NSArray<CKShareBlockedIdentity *> *)blockedIdentities CKSHARE_REQUEST_ACCESS_INTERFACES_AVAILABILITY;
 
 @end
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareAccessRequester.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareAccessRequester.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareAccessRequester.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareAccessRequester.h	2025-05-25 02:08:39
@@ -0,0 +1,45 @@
+//
+//  CKShareAccessRequester.h
+//  CloudKit
+//
+//  Copyright © 2025 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+#define CK_SHARE_ACCESS_REQUESTER_AVAILABILITY API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), watchos(26.0), visionos(26.0))
+
+
+@class CKUserIdentity, CKUserIdentityLookupInfo, CNContact;
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+CK_SHARE_ACCESS_REQUESTER_AVAILABILITY
+NS_SWIFT_NAME(CKShare.AccessRequester)
+CK_SUBCLASSING_RESTRICTED // should not be subclassed, or Sendable may no longer apply
+NS_SWIFT_SENDABLE
+@interface CKShareAccessRequester : NSObject <NSSecureCoding, NSCopying>
+
++ (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+
+/// The user identity this share access requester represents.
+@property (readonly, copy) CKUserIdentity *userIdentity;
+
+/// Convenience method to get the requester's lookup info.
+/// This lookup info can be used in ``CKFetchShareParticipantsOperation`` to approve the requester by fetching the corresponding participant and adding the participant to the share.
+@property (nonatomic, readonly, copy) CKUserIdentityLookupInfo *participantLookupInfo;
+
+#if !TARGET_OS_TV
+
+/// Returns a displayable `CNContact` for the requester, or a new `CNContact` if none exists in the user's contacts.
+/// Provides a standardized format for the requester's underlying lookup info in the user identity.
+/// Use when displaying the requester information to other participants and approvers in application UI.
+@property (nonatomic, readonly, copy) CNContact *contact;
+
+#endif
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareBlockedIdentity.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareBlockedIdentity.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareBlockedIdentity.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareBlockedIdentity.h	2025-05-25 02:08:40
@@ -0,0 +1,41 @@
+//
+//  CKShareBlockedIdentity.h
+//  CloudKit
+//
+//  Copyright © 2025 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+#define CK_SHARE_BLOCKED_IDENTITY_AVAILABILITY API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), watchos(26.0), visionos(26.0))
+
+
+@class CKUserIdentity, CNContact;
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+CK_SHARE_BLOCKED_IDENTITY_AVAILABILITY
+NS_SWIFT_NAME(CKShare.BlockedIdentity)
+CK_SUBCLASSING_EXTERNALLY_RESTRICTED // should not be subclassed, or Sendable may no longer apply
+NS_SWIFT_SENDABLE
+@interface CKShareBlockedIdentity : NSObject <NSSecureCoding, NSCopying>
+
++ (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+
+/// The user identity this blocked identity represents.
+@property (readonly, copy, nonatomic) CKUserIdentity *userIdentity;
+
+#if !TARGET_OS_TV
+
+/// Returns a displayable `CNContact` for the blocked identity, or a new `CNContact` if none exists in the user's contacts.
+/// Provides a standardized format for the blocked identity's underlying lookup info in the user identity.
+/// Use when displaying the blocked identity information to other participants in application UI.
+@property (nonatomic, readonly, copy) CNContact *contact;
+
+#endif
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h	2025-04-19 04:15:34
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h	2025-05-25 02:08:39
@@ -17,8 +17,8 @@
 // NS_SWIFT_SENDABLE on macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)
 @interface CKShareMetadata : NSObject <NSCopying, NSSecureCoding>
 
-- (instancetype)init CK_UNAVAILABLE("Obtain `CKShareMetadata` from `CKFetchShareMetadataOperation` or platform-specific scene / app delegate callbacks.");
-+ (instancetype)new CK_UNAVAILABLE("Obtain `CKShareMetadata` from `CKFetchShareMetadataOperation` or platform-specific scene / app delegate callbacks.");
+- (instancetype)init CK_UNAVAILABLE("Obtain `CKShareMetadata` from ``CKFetchShareMetadataOperation`` or platform-specific scene / app delegate callbacks.");
++ (instancetype)new CK_UNAVAILABLE("Obtain `CKShareMetadata` from ``CKFetchShareMetadataOperation`` or platform-specific scene / app delegate callbacks.");
 
 @property (readonly, copy) NSString *containerIdentifier;
 @property (readonly, copy) CKShare *share;
@@ -34,7 +34,7 @@
 /*! This is only present if the share metadata was returned from a CKFetchShareMetadataOperation with shouldFetchRootRecord set to YES */  
 @property (nullable, readonly, copy) CKRecord *rootRecord;
 
-@property (readonly, assign) CKShareParticipantType participantType API_DEPRECATED_WITH_REPLACEMENT("participantRole", macos(10.12, 10.14), ios(10.0, 12.0), tvos(10.0, 12.0), watchos(3.0, 5.0));
+@property (readonly, assign) CKShareParticipantType participantType API_OBSOLETED_WITH_REPLACEMENT("role", macos(10.12, 10.14, 16.0), ios(10.0, 12.0, 19.0), tvos(10.0, 12.0, 19.0), watchos(3.0, 5.0, 12.0));
 @property (readonly, copy) CKRecordID *rootRecordID API_DEPRECATED_WITH_REPLACEMENT("hierarchicalRootRecordID", macos(10.12, 13.0), ios(10.0, 16.0), tvos(10.0, 16.0), watchos(3.0, 9.0));
 
 @end
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h	2025-04-19 04:15:33
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h	2025-05-25 02:21:45
@@ -26,18 +26,19 @@
     CKShareParticipantPermissionReadWrite,
 } API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
-/*! @abstract The participant type determines whether a participant can modify the list of participants on a share.
- *
- *  @discussion
- *  - Owners can add private users
- *  - Private users can access the share
- *  - Public users are "self-added" when the participant accesses the shareURL.  Owners cannot add public users.
- */
+/// Defines the participant role in a share:
+/// - `owner`: Can add private users.
+/// - `privateUser`: Can access the share.
+/// - `publicUser`: Self-added when accessing the share URL (owners cannot add public users).
+/// - `administrator`: Can add and remove participants and change their permissions.
+
+/// Shares with ``.administrator`` participants will be returned as read-only to devices running OS versions prior to the ``.administrator`` role being introduced. The ``.administrator`` participants on these read-only shares will be returned as ``.privateUser``.
 typedef NS_ENUM(NSInteger, CKShareParticipantRole) {
     CKShareParticipantRoleUnknown = 0,
     CKShareParticipantRoleOwner = 1,
     CKShareParticipantRolePrivateUser = 3,
     CKShareParticipantRolePublicUser = 4,
+    CKShareParticipantRoleAdministrator API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), watchos(26.0), visionos(26.0)) = 2,
 } API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0));
 
 typedef NS_ENUM(NSInteger, CKShareParticipantType) {
@@ -45,7 +46,7 @@
     CKShareParticipantTypeOwner = 1,
     CKShareParticipantTypePrivateUser = 3,
     CKShareParticipantTypePublicUser = 4,
-} API_DEPRECATED_WITH_REPLACEMENT("CKShareParticipantRole", macos(10.12, 10.14), ios(10.0, 12.0), tvos(10.0, 12.0), watchos(3.0, 5.0));
+} API_OBSOLETED_WITH_REPLACEMENT("CKShareParticipantRole", macos(10.12, 10.14, 16.0), ios(10.0, 12.0, 19.0), tvos(10.0, 12.0, 19.0), watchos(3.0, 5.0, 12.0));
 
 API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
 // This class should not be subclassed. If it is, Sendable may no longer apply.
@@ -61,8 +62,8 @@
 /*! The default participant role is @c CKShareParticipantRolePrivateUser. */
 @property (assign) CKShareParticipantRole role API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0));
 
-/*! The default participant type is @c CKShareParticipantTypePrivateUser. */
-@property (assign) CKShareParticipantType type API_DEPRECATED_WITH_REPLACEMENT("role", macos(10.12, 10.14), ios(10.0, 12.0), tvos(10.0, 12.0), watchos(3.0, 5.0));
+/// The default participant type is ``CKShareParticipantTypePrivateUser``.
+@property (assign) CKShareParticipantType type API_OBSOLETED_WITH_REPLACEMENT("role", macos(10.12, 10.14, 16.0), ios(10.0, 12.0, 19.0), tvos(10.0, 12.0, 19.0), watchos(3.0, 5.0, 12.0));
 
 @property (readonly, assign) CKShareParticipantAcceptanceStatus acceptanceStatus;
 
@@ -71,6 +72,23 @@
 
 /*! A unique identifier for this participant. */
 @property (readonly, copy) NSString *participantID API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
+
+/// `YES` if this participant was a requester before getting added to the share
+@property (readonly, assign, nonatomic) BOOL isApprovedRequester API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), watchos(26.0), visionos(26.0));
+
+/// The timestamp when the participant was added, set when the share is saved to the server.
+@property (nullable, readonly, copy, nonatomic) NSDate *dateAddedToShare API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), watchos(26.0), visionos(26.0));
+
+/*! @abstract Generate a unique URL for inviting a participant without knowing their handle
+ *
+ *  @discussion When a participant's email address / phone number / userRecordID isn't known up-front, a @c oneTimeURLParticipant can be added
+ *  to the share. Once the share is saved, a custom invitation link is available for that @c oneTimeURLParticipant. The link is accessed via `-[CKShare oneTimeURLForParticipantID]:)`.
+ *  This custom link can be used by any recipient user to fetch share metadata and accept the share.
+ *
+ *  Note that a one-time URL participant in the @c CKShareParticipantAcceptanceStatusPending state has empty `CKUserIdentity.nameComponents`
+ *  and a nil `CKUserIdentity.lookupInfo`.
+ */
++ (instancetype)oneTimeURLParticipant NS_SWIFT_NAME(oneTimeURLParticipant()) API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0));
 
 @end
 
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareRequestAccessOperation.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareRequestAccessOperation.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareRequestAccessOperation.h	1969-12-31 19:00:00
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareRequestAccessOperation.h	2025-05-25 02:08:39
@@ -0,0 +1,52 @@
+//
+//  CKShareRequestAccessOperation.h
+//  CloudKit
+//
+//  Copyright © 2025 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <CloudKit/CKDatabaseOperation.h>
+
+@class CKShare;
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+API_AVAILABLE(macos(26.0), ios(26.0), tvos(26.0), watchos(26.0), visionos(26.0))
+@interface CKShareRequestAccessOperation : CKOperation
+
+/// - Returns: A new ``CKShareRequestAccessOperation`` instance.
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+
+/// Creates a ``CKShareRequestAccessOperation`` for requesting access to the specified shares.
+///
+/// - Parameter shareURLs: An array of `NSURL` objects for shares you wish to request access to
+/// - Returns: A ``CKShareRequestAccessOperation`` instance configured with the given share URLs.
+- (instancetype)initWithShareURLs:(NSArray<NSURL *> *)shareURLs NS_SWIFT_NAME(init(shareURLs:));
+
+/// The share URLs for which access is being requested.
+///
+/// If requesting access to multiple shares, include multiple `NSURL` objects.
+/// The server processes them independently.
+@property (nullable, copy, nonatomic) NSArray<NSURL *> *shareURLs;
+
+/// A block that is called once for each share URL processed by the server.
+///
+/// - Parameters:
+///   - shareURL: The URL of the processed share.
+///   - shareRequestAccessError: If non-nil, an error describing why the request failed for this share.
+///
+/// The server does **not** reveal share existence to the requester to protect privacy.
+@property (nullable, copy, nonatomic) void (^perShareAccessRequestCompletionBlock)(NSURL *shareURL, NSError * _Nullable shareRequestAccessError) NS_REFINED_FOR_SWIFT;
+
+/// A block that is called when the entire operation completes.
+///
+/// - Parameter operationError: If non-nil, an error describing why the request failed.
+///
+/// If operationError is CKErrorPartialFailure, the userInfo dictionary
+/// contains per-share errors under ``CKPartialErrorsByItemIDKey``.
+@property (nullable, copy, nonatomic) void (^shareRequestAccessCompletionBlock)(NSError * _Nullable operationError) NS_REFINED_FOR_SWIFT;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngine.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngine.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngine.h	2025-04-19 03:37:29
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngine.h	2025-05-30 23:54:52
@@ -8,7 +8,11 @@
 #import <CloudKit/CKDefines.h>
 #import <CloudKit/CKSyncEngineRecordZoneChangeBatch.h>
 
-@class CKDatabase, CKOperationGroup, CKRecord, CKRecordID, CKRecordZone, CKRecordZoneID, CKSyncEngineConfiguration, CKSyncEngineEvent, CKSyncEngineFetchChangesContext, CKSyncEngineFetchChangesOptions, CKSyncEngineFetchChangesScope, CKSyncEnginePendingRecordZoneChange, CKSyncEngineSendChangesContext, CKSyncEngineSendChangesOptions, CKSyncEngineSendChangesScope, CKSyncEngineState, CKSyncEngineStateSerialization;
+@class CKDatabase, CKOperationGroup, CKRecord, CKRecordID, CKRecordZone, CKRecordZoneID;
+@class CKSyncEngineConfiguration, CKSyncEngineEvent, CKSyncEngineState, CKSyncEngineStateSerialization;
+@class CKSyncEngineFetchChangesContext, CKSyncEngineFetchChangesOptions, CKSyncEngineFetchChangesScope;
+@class CKSyncEngineSendChangesContext, CKSyncEngineSendChangesOptions, CKSyncEngineSendChangesScope, CKSyncEnginePendingRecordZoneChange;
+
 @protocol CKSyncEngineDelegate;
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
@@ -26,10 +30,10 @@
 /// The sync engine will perform work in the background on your behalf, and it needs to be initialized
 /// so that it can properly listen for push notifications and handle scheduled sync tasks.
 ///
-/// When initializing your sync engine, you need to provide an object conforming to the ``CKSyncEngineDelegate`` protocol.
+/// When initializing your sync engine, you need to provide an object conforming to the `CKSyncEngineDelegate` protocol.
 /// This protocol is the main method of communication between the sync engine and your app.
 /// You also need to provide your last known version of the ``CKSyncEngine/State/Serialization``.
-/// See ``CKSyncEngine/State`` and ``Event/StateUpdate`` for more details on the sync engine state.
+/// See ``CKSyncEngine/State`` and ``CKSyncEngine/Event/StateUpdate`` for more details on the sync engine state.
 ///
 /// Note that before using `CKSyncEngine` in your app, you need to add the CloudKit and remote notification capabilities.
 ///
@@ -40,37 +44,37 @@
 ///
 /// When you add pending changes to the state, the sync engine will schedule a task to sync.
 /// When the sync task runs, the sync engine will start sending changes to the server.
-/// The sync engine will automatically send database changes from ``State/pendingDatabaseChanges``, but you need to provide the record zone changes yourself.
-/// In order to send record zone changes, you need to return them from ``CKSyncEngineDelegate/nextRecordZoneChangeBatch(_:syncEngine:)``.
+/// The sync engine will automatically send database changes from ``CKSyncEngine/State/pendingDatabaseChanges``, but you need to provide the record zone changes yourself.
+/// In order to send record zone changes, you need to return them from `-[CKSyncEngineDelegate syncEngine:nextRecordZoneChangeBatchForContext:]`.
 ///
 /// When the sync engine finishes sending a batch of changes to the server,
-/// your `CKSyncEngineDelegate` will receive ``Event/sentDatabaseChanges(_:)`` and ``Event/sentRecordZoneChanges(_:)`` events.
+/// your `CKSyncEngineDelegate` will receive ``CKSyncEngine/Event/sentDatabaseChanges(_:)`` and ``CKSyncEngine/Event/sentRecordZoneChanges(_:)`` events.
 /// These events will notify you of the success or failure of the changes you tried to send.
 ///
 /// At a high level, sending changes to the server happens with the following order of operations:
 ///
 /// 1. You add pending changes to ``CKSyncEngine/state``.
-/// 2. You receive ``Event/willSendChanges(_:)`` in ``CKSyncEngineDelegate/handleEvent(_:syncEngine:)``
+/// 2. You receive ``CKSyncEngine/Event/willSendChanges(_:)`` in `-[CKSyncEngineDelegate syncEngine:handleEvent:]`
 /// 3. If there are pending database changes, the sync engine sends the next batch.
-/// 4. If any database changes were sent, your delegate receives``Event/sentDatabaseChanges(_:)``.
+/// 4. If any database changes were sent, your delegate receives``CKSyncEngine/Event/sentDatabaseChanges(_:)``.
 /// 5. Repeat from step 3 until all pending database changes are sent, then move on to record zone changes in step 6.
-/// 6. The sync engine asks for the next batch of record zone changes by calling ``CKSyncEngineDelegate/nextRecordZoneChangeBatchToSend(_:syncEngine:)``.
+/// 6. The sync engine asks for the next batch of record zone changes by calling `-[CKSyncEngineDelegate syncEngine:nextRecordZoneChangeBatchForContext:]`.
 /// 7. The sync engine sends the next record zone change batch to the server.
-/// 8. If any record zone changes were sent, your delegate receives ``Event/sentRecordZoneChanges(_:)``.
+/// 8. If any record zone changes were sent, your delegate receives ``CKSyncEngine/Event/sentRecordZoneChanges(_:)``.
 /// 9. If you added any pending database changes during steps 6-8, the sync engine repeats from step 3. Otherwise, it repeats from step 6.
-/// 10. When all pending changes are sent, your delegate receives ``Event/didSendChanges(_:)``.
+/// 10. When all pending changes are sent, your delegate receives ``CKSyncEngine/Event/didSendChanges(_:)``.
 ///
 /// # Fetching Changes from the Server
 ///
 /// The sync engine will automatically listen for remote notifications, and it will fetch changes from the server when necessary.
 /// Generally, you'll receive events in this order:
 ///
-/// 1. Your delegate receives ``Event/willFetchChanges(_:)``.
-/// 2. If there are new database changes to fetch, you receive batches of them in ``Event/fetchedDatabaseChanges(_:)`` events.
-/// 3. If there are new record zone changes to fetch, you will receive ``Event/willFetchRecordZoneChanges(_:)`` for each zone that has new changes.
-/// 4. The sync engine fetches record zone changes and gives you batches of them in ``Event/fetchedRecordZoneChanges(_:)`` events.
-/// 5. Your delegate receives ``Event/didFetchRecordZoneChanges(_:)`` for each zone that had changes to fetch.
-/// 6. Your delegate receives ``Event/didFetchChanges(_:)``, indicating that sync engine has finished fetching changes.
+/// 1. Your delegate receives ``CKSyncEngine/Event/willFetchChanges(_:)``.
+/// 2. If there are new database changes to fetch, you receive batches of them in ``CKSyncEngine/Event/fetchedDatabaseChanges(_:)`` events.
+/// 3. If there are new record zone changes to fetch, you will receive ``CKSyncEngine/Event/willFetchRecordZoneChanges(_:)`` for each zone that has new changes.
+/// 4. The sync engine fetches record zone changes and gives you batches of them in ``CKSyncEngine/Event/fetchedRecordZoneChanges(_:)`` events.
+/// 5. Your delegate receives ``CKSyncEngine/Event/didFetchRecordZoneChanges(_:)`` for each zone that had changes to fetch.
+/// 6. Your delegate receives ``CKSyncEngine/Event/didFetchChanges(_:)``, indicating that sync engine has finished fetching changes.
 ///
 /// # Sync Scheduling
 ///
@@ -100,20 +104,20 @@
 /// The sync engine will retry the operations for these transient errors automatically when it makes sense to do so.
 /// Specifically, the sync engine will handle the following errors on your behalf:
 ///
-/// * ``CKErrorCode/notAuthenticated``
-/// * ``CKErrorCode/accountTemporarilyUnavailable``
-/// * ``CKErrorCode/networkFailure``
-/// * ``CKErrorCode/networkUnavailable``
-/// * ``CKErrorCode/requestRateLimited``
-/// * ``CKErrorCode/serviceUnavailable``
-/// * ``CKErrorCode/zoneBusy``
+/// * ``CKError/notAuthenticated``
+/// * ``CKError/accountTemporarilyUnavailable``
+/// * ``CKError/networkFailure``
+/// * ``CKError/networkUnavailable``
+/// * ``CKError/requestRateLimited``
+/// * ``CKError/serviceUnavailable``
+/// * ``CKError/zoneBusy``
 ///
 /// When the sync engine encounters one of these errors, it will wait for the system to be in a good state and try again.
 /// For example, if the server sends back a `.requestRateLimited` error, the sync engine will respect this throttle and try again after the retry-after time.
 ///
 /// `CKSyncEngine` will _not_ handle errors that require application-specific logic.
-/// For example, if you try to save a record and get a ``CKErrorCode/serverRecordChanged``, you need to handle that error yourself.
-/// There are plenty of errors that the sync engine cannot handle on your behalf, see ``CKErrorCode`` for a list of all the possible errors.
+/// For example, if you try to save a record and get a ``CKError/serverRecordChanged``, you need to handle that error yourself.
+/// There are plenty of errors that the sync engine cannot handle on your behalf, see ``CKError`` for a list of all the possible errors.
 ///
 /// # Accounts
 ///
@@ -123,7 +127,7 @@
 /// Once an account is available, the sync engine will start syncing automatically.
 ///
 /// It will also listen for when the user signs in or out of their account.
-/// When it notices an account change, it will send an ``Event/accountChange(_:)`` to your delegate.
+/// When it notices an account change, it will send an ``CKSyncEngine/Event/accountChange(_:)`` to your delegate.
 /// It's your responsibility to react appropriately to this change and update your local persistence.
 API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
 NS_REFINED_FOR_SWIFT
@@ -154,7 +158,7 @@
 /// For example, you might use this in your tests to simulate specific sync scenarios.
 ///
 /// Fetching changes from the server might result in some events being posted to your delegate via `handleEvent`.
-/// For example, you might receive a `CKSyncEngineWillFetchChangesEvent` or `CKSyncEngineWillFetchChangesEvent`.
+/// For example, you might receive a `CKSyncEngineWillFetchChangesEvent` or `CKSyncEngineDidFetchChangesEvent`.
 /// This will not complete until all the relevant events have been handled by your delegate.
 - (void)fetchChangesWithCompletionHandler:(nullable void (NS_SWIFT_SENDABLE ^)(NSError * _Nullable error))completionHandler;
 
@@ -171,7 +175,7 @@
 /// Sending changes to the server might result in some events being posted to your delegate via `handleEvent`.
 /// For example, you might receive a `CKSyncEngineWillSendChangesEvent` or `CKSyncEngineDidSendChangesEvent`.
 /// This function will not return until all the relevant events have been handled by your delegate.
-- (void)sendChangesWithCompletionHandler:(nullable void (^)(NSError * _Nullable error))completionHandler;
+- (void)sendChangesWithCompletionHandler:(nullable void (NS_SWIFT_SENDABLE ^)(NSError * _Nullable error))completionHandler;
 
 /// Sends pending changes to the server with the specified options.
 /// See discussion in ``sendChangesWithCompletionHandler:`` for more information.
@@ -214,7 +218,7 @@
 ///
 /// ## Sending changes for specific zones
 ///
-/// When you call `sendChanges` for a specific set of zone IDs, you should make sure to only send changes for those zones.
+/// When you call ``CKSyncEngine/sendChanges(_:)`` for a specific set of zone IDs, you should make sure to only send changes for those zones.
 /// You can do this by checking the `zoneIDs` property on ``CKSyncEngineSendChangesContext/options``.
 ///
 /// For example, you might have some code like this:
@@ -424,14 +428,14 @@
     /// This sync was scheduled automatically by the sync engine.
     CKSyncEngineSyncReasonScheduled,
 
-    /// This sync was requested manually by calling `fetchChanges` or `sendChanges`.
+    /// This sync was requested manually by calling ``CKSyncEngine/fetchChanges(_:)`` or ``CKSyncEngine/sendChanges(_:)``.
     CKSyncEngineSyncReasonManual,
 };
 
 /// The context of an attempt to fetch changes from the server.
 ///
 /// The sync engine might attempt to fetch changes to the server for many reasons.
-/// For example, if you call `fetchChanges`, it'll try to fetch changes immediately.
+/// For example, if you call ``CKSyncEngine/fetchChanges(_:)``, it'll try to fetch changes immediately.
 /// Or if it receives a push notification, it'll schedule a sync and fetch changes when the scheduler task runs.
 /// This object represents one of those attempts to fetch changes.
 API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
@@ -454,7 +458,7 @@
 /// The context of an attempt to send changes to the server.
 ///
 /// The sync engine might attempt to send changes to the server for many reasons.
-/// For example, if you call `sendChanges`, it'll try to send changes immediately.
+/// For example, if you call ``CKSyncEngine/sendChanges(_:)``, it'll try to send changes immediately.
 /// Or if you add pending changes to the state, it'll schedule a sync and send changes when the scheduler task runs.
 /// This object represents one of those attempts to send changes.
 API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineConfiguration.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineConfiguration.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineConfiguration.h	2025-04-19 03:55:36
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineConfiguration.h	2025-05-30 23:54:02
@@ -32,12 +32,12 @@
 /// You can have multiple instances of `CKSyncEngine` in the same process, each targeting a different database.
 /// For example, you might have one for your private database and one for your shared database.
 ///
-/// It's also technically possible to have multiple instances of `CKSyncEngine` for the same `CKDatabase`.
+/// It's also technically possible to have multiple instances of `CKSyncEngine` for the same ``CKDatabase``.
 /// This isn't recommended for production code, but it can be helpful for testing your `CKSyncEngine` integration.
 /// For example, you might make multiple `CKSyncEngine` instances to simulate multiple devices syncing back and forth.
 @property (strong) CKDatabase *database;
 
-/// The state serialization you last received in a `CKSyncEngineStateUpdateEvent`.
+/// The state serialization you last received in a ``CKSyncEngine/Event/StateUpdate``.
 ///
 /// If this is the first time ever initializing your `CKSyncEngine`, you can provide `nil`.
 @property (nullable, copy) CKSyncEngineStateSerialization *stateSerialization;
@@ -52,11 +52,11 @@
 /// When it receives a notification about new changes on the server, it will automatically schedule a sync task to fetch changes.
 /// It will also automatically re-schedule sync tasks for retryable errors such as network failures or server throttles.
 ///
-/// If `automaticallySync` is off, then the sync engine will not perform any operations unless you tell it to do so via `fetchChanges` or `sendChanges`.
+/// If ``CKSyncEngineConfiguration/automaticallySync`` is off, then the sync engine will not perform any operations unless you tell it to do so via ``CKSyncEngine/fetchChanges(_:)`` or ``CKSyncEngine/sendChanges(_:)``.
 ///
 /// Most applications likely want to enable automatic syncing during normal use.
 /// However, you might want to disable it if you have specific requirements for when you want to sync.
-/// For example, if you want to sync only once per day, you can turn off automatic sync and manually call `fetchChanges` and `sendChanges` once per day.
+/// For example, if you want to sync only once per day, you can turn off automatic sync and manually call ``CKSyncEngine/fetchChanges(_:)`` and ``CKSyncEngine/sendChanges(_:)`` once per day.
 ///
 /// You might also disable automatic sync when writing automated tests for your integration with `CKSyncEngine`.
 /// This way, you can have fine grained control over exactly when the sync engine fetches or sends changes.
@@ -66,7 +66,7 @@
 /// An optional override for the sync engine's default database subscription ID.
 /// Use this for backward compatibility with a previous CloudKit sync implementation.
 ///
-/// By default, `CKSyncEngine` will create its own `CKDatabaseSubscription` with its own subscription ID.
+/// By default, `CKSyncEngine` will create its own ``CKDatabaseSubscription`` with its own subscription ID.
 /// If you're migrating to `CKSyncEngine` from a custom CloudKit sync implementation, you can specify your previous subscription ID here.
 /// This allows your `CKSyncEngine` integration to be backward compatible with previous versions of your app.
 ///
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineEvent.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineEvent.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineEvent.h	2025-05-03 20:34:59
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineEvent.h	2025-05-25 02:05:57
@@ -8,7 +8,9 @@
 #import <Foundation/Foundation.h>
 #import <CloudKit/CKRecord.h>
 
-@class CKRecordZone, CKRecordZoneID, CKSyncEngineAccountChangeEvent, CKSyncEngineDidFetchChangesEvent, CKSyncEngineDidFetchRecordZoneChangesEvent, CKSyncEngineDidSendChangesEvent, CKSyncEngineFailedRecordSave, CKSyncEngineFailedZoneSave, CKSyncEngineFetchChangesContext, CKSyncEngineFetchedDatabaseChangesEvent, CKSyncEngineFetchedRecordDeletion, CKSyncEngineFetchedRecordZoneChangesEvent, CKSyncEngineFetchedZoneDeletion, CKSyncEngineSendChangesContext, CKSyncEngineSentDatabaseChangesEvent, CKSyncEngineSentRecordZoneChangesEvent, CKSyncEngineStateSerialization, CKSyncEngineStateUpdateEvent, CKSyncEngineWillFetchChangesEvent, CKSyncEngineWillFetchRecordZoneChangesEvent, CKSyncEngineWillSendChangesEvent;
+@class CKRecordZone, CKRecordZoneID;
+@class CKSyncEngineAccountChangeEvent, CKSyncEngineDidFetchChangesEvent, CKSyncEngineDidFetchRecordZoneChangesEvent, CKSyncEngineDidSendChangesEvent, CKSyncEngineFetchedDatabaseChangesEvent, CKSyncEngineFetchedRecordDeletion, CKSyncEngineFetchedRecordZoneChangesEvent, CKSyncEngineSentDatabaseChangesEvent, CKSyncEngineSentRecordZoneChangesEvent, CKSyncEngineStateUpdateEvent, CKSyncEngineWillFetchChangesEvent, CKSyncEngineWillFetchRecordZoneChangesEvent, CKSyncEngineWillSendChangesEvent;
+@class CKSyncEngineFailedRecordSave, CKSyncEngineFailedZoneSave, CKSyncEngineFetchChangesContext, CKSyncEngineFetchedZoneDeletion, CKSyncEngineSendChangesContext, CKSyncEngineStateSerialization;
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
@@ -122,15 +124,18 @@
 // These will crash if used for the wrong event type.
 @property (readonly, strong, nonatomic) CKSyncEngineStateUpdateEvent *stateUpdateEvent;
 @property (readonly, strong, nonatomic) CKSyncEngineAccountChangeEvent *accountChangeEvent;
-@property (readonly, strong, nonatomic) CKSyncEngineFetchedDatabaseChangesEvent *fetchedDatabaseChangesEvent;
-@property (readonly, strong, nonatomic) CKSyncEngineFetchedRecordZoneChangesEvent *fetchedRecordZoneChangesEvent;
-@property (readonly, strong, nonatomic) CKSyncEngineSentDatabaseChangesEvent *sentDatabaseChangesEvent;
-@property (readonly, strong, nonatomic) CKSyncEngineSentRecordZoneChangesEvent *sentRecordZoneChangesEvent;
+
 @property (readonly, strong, nonatomic) CKSyncEngineWillFetchChangesEvent *willFetchChangesEvent;
+@property (readonly, strong, nonatomic) CKSyncEngineFetchedDatabaseChangesEvent *fetchedDatabaseChangesEvent;
+@property (readonly, strong, nonatomic) CKSyncEngineDidFetchChangesEvent *didFetchChangesEvent;
+
 @property (readonly, strong, nonatomic) CKSyncEngineWillFetchRecordZoneChangesEvent *willFetchRecordZoneChangesEvent;
+@property (readonly, strong, nonatomic) CKSyncEngineFetchedRecordZoneChangesEvent *fetchedRecordZoneChangesEvent;
 @property (readonly, strong, nonatomic) CKSyncEngineDidFetchRecordZoneChangesEvent *didFetchRecordZoneChangesEvent;
-@property (readonly, strong, nonatomic) CKSyncEngineDidFetchChangesEvent *didFetchChangesEvent;
+
 @property (readonly, strong, nonatomic) CKSyncEngineWillSendChangesEvent *willSendChangesEvent;
+@property (readonly, strong, nonatomic) CKSyncEngineSentDatabaseChangesEvent *sentDatabaseChangesEvent;
+@property (readonly, strong, nonatomic) CKSyncEngineSentRecordZoneChangesEvent *sentRecordZoneChangesEvent;
 @property (readonly, strong, nonatomic) CKSyncEngineDidSendChangesEvent *didSendChangesEvent;
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -141,7 +146,7 @@
 /// The sync engine state was updated, and you should persist it locally.
 ///
 /// In order to function properly and efficiently, `CKSyncEngine` tracks some state internally.
-/// When the sync engine state changes, it will give you the latest serialized version in a `CKSyncEngineStateUpdateEvent`.
+/// When the sync engine state changes, it will give you the latest serialized version in a ``CKSyncEngine/Event/StateUpdate``.
 /// This event will happen occasionally when the sync engine modifies the state internally during normal sync operation.
 /// This event will also happen when you change the state yourself.
 ///
@@ -270,7 +275,7 @@
 
 /// The sync engine finished sending a batch of record zone changes to the server.
 ///
-/// If a record save succeeded, you should encode the system fields of this record to use the next time you save. See `encodeSystemFields` on `CKRecord`.
+/// If a record save succeeded, you should encode the system fields of this record to use the next time you save. See `encodeSystemFields` on ``CKRecord``.
 ///
 /// If a record deletion succeeded, you should remove any local system fields for that record.
 ///
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineRecordZoneChangeBatch.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineRecordZoneChangeBatch.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineRecordZoneChangeBatch.h	2025-04-19 04:15:34
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineRecordZoneChangeBatch.h	2025-05-25 02:08:39
@@ -23,7 +23,7 @@
 ///
 /// This will iterate over the pending changes in order and add them to the batch until it reaches the max batch size.
 ///
-/// When it sees a pending save, it will ask the record provider for the actual `CKRecord` to send to the server.
+/// When it sees a pending save, it will ask the record provider for the actual ``CKRecord`` to send to the server.
 /// If you return `nil` from the record provider, this will skip to the next pending change.
 ///
 /// This will return `nil` if there are no pending changes to send.
@@ -38,7 +38,7 @@
 ///
 /// When creating your own batches, you need to consider batch size limitations.
 /// There is a maximum count and size of records that can be sent to the server in a single batch.
-/// If you supply too many changes, or if the total size of the records is too large, then you might get a ``CKErrorLimitExceeded``.
+/// If you supply too many changes, or if the total size of the records is too large, then you might get a ``CKError/limitExceeded``.
 ///
 /// > Tip: These batch size limitations are handled automatically by the ``initWithPendingChanges:recordProvider:`` initializer.
 - (instancetype)initWithRecordsToSave:(nullable NSArray<CKRecord *> *)recordsToSave
@@ -56,7 +56,7 @@
 
 /// If set to true, the sync engine will modify these records atomically by zone.
 ///
-/// If this is true, and if any record change fails, then any other changes from that zone in this batch will also fail with ``CKErrorBatchRequestFailed``.
+/// If this is true, and if any record change fails, then any other changes from that zone in this batch will also fail with ``CKError/batchRequestFailed``.
 ///
 /// Records that exist in different zones will not be modified together atomically.
 @property (assign) BOOL atomicByZone;
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineState.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineState.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineState.h	2025-04-19 04:15:34
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineState.h	2025-05-25 02:08:39
@@ -9,13 +9,14 @@
 
 #import <CloudKit/CKDefines.h>
 
-@class CKRecordID, CKRecordZone, CKRecordZoneID, CKSyncEnginePendingRecordZoneChange, CKSyncEnginePendingDatabaseChange;
+@class CKAsset, CKRecordID, CKRecordZone, CKRecordZoneID;
+@class CKSyncEnginePendingRecordZoneChange, CKSyncEnginePendingDatabaseChange;
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
-/// An object that tracks some state required for proper and efficient operation of `CKSyncEngine`.
+/// An object that tracks some state required for proper and efficient operation of ``CKSyncEngine-5sie5``.
 ///
-/// `CKSyncEngine` needs to track several things in order to properly sync.
+/// ``CKSyncEngine-5sie5`` needs to track several things in order to properly sync.
 /// For example, it needs to remember the last server change tokens for your database and zones.
 /// It also needs to keep track of things like the last known user record ID and other various pieces of state.
 ///
@@ -24,12 +25,12 @@
 /// ## Pending changes
 ///
 /// One of the main things you can control is the list of pending changes to send to the server.
-/// You can control these by calling functions like ``addPendingDatabaseChanges:`` and  ``addPendingRecordZoneChanges:``.
+/// You can control these by calling functions like ``addPendingDatabaseChanges:`` and ``addPendingRecordZoneChanges:``.
 /// When you add new pending changes, the sync engine will automatically schedule a task to sync with the server.
 ///
 /// ## State serialization
 ///
-/// `CKSyncEngine` will occasionally update its state in the background.
+/// ``CKSyncEngine-5sie5`` will occasionally update its state in the background.
 /// When it updates its state, your delegate will receive a ``CKSyncEngineStateUpdateEvent``.
 ///
 /// This event will contain a ``CKSyncEngineStateSerialization``, which you should persist locally.
@@ -45,9 +46,9 @@
 
 /// A list of record changes that need to be sent to the server.
 ///
-/// `CKSyncEngine` provides the convenience of tracking your pending record zone changes.
+/// ``CKSyncEngine-5sie5`` provides the convenience of tracking your pending record zone changes.
 /// When the user makes some changes that need to be sent to the server, you can track them in this list.
-/// Then, you can use this list when creating your next `CKSyncEngineRecordZoneChangeBatch` in your `CKSyncEngineDelegate`.
+/// Then, you can use this list when creating your next ``CKSyncEngineRecordZoneChangeBatch`` in your ``CKSyncEngineDelegate-1q7g8``.
 ///
 /// The sync engine will ensure consistency and deduplicate these pending changes under the hood.
 /// For example, if you add a pending save for record A, then record B, then record A again, this will result in a list of `[saveRecordA, saveRecordB]`.
@@ -57,21 +58,21 @@
 /// For example, when it successfully saves a record, it will remove that change from this list.
 /// If it fails to send a change due to some retryable error (e.g. a network failure), it will keep that change in this list.
 ///
-/// If you'd prefer to track pending changes yourself, you can use `hasPendingUntrackedChanges` instead.
+/// If you'd prefer to track pending changes yourself, you can use ``CKSyncEngine/State/hasPendingUntrackedChanges`` instead.
 @property (readonly, copy) NSArray<CKSyncEnginePendingRecordZoneChange *> *pendingRecordZoneChanges;
 
 /// A list of database changes that need to be sent to the server, similar to `pendingRecordZoneChanges`.
 @property (readonly, copy) NSArray<CKSyncEnginePendingDatabaseChange *> *pendingDatabaseChanges;
 
-/// This represents whether or not you have pending changes to send to the server that aren't tracked in `pendingRecordZoneChanges`.
+/// This represents whether or not you have pending changes to send to the server that aren't tracked in ``CKSyncEngine/State/pendingRecordZoneChanges``.
 /// This is useful if you want to track pending changes in your own local database instead of the sync engine state.
 ///
 /// When this property is set, the sync engine will automatically schedule a sync.
-/// When the sync task runs, it will ask your delegate for pending changes in `nextRecordZoneChangeBatch`.
+/// When the sync task runs, it will ask your delegate for pending changes in ``CKSyncEngineDelegate/nextRecordZoneChangeBatch(_:syncEngine:)``.
 @property (assign) BOOL hasPendingUntrackedChanges;
 
 /// The list of zone IDs that have new changes to fetch from the server.
-/// `CKSyncEngine` keeps track of these zones and will update this list as it receives new information.
+/// ``CKSyncEngine-5sie5`` keeps track of these zones and will update this list as it receives new information.
 @property (readonly, copy) NSArray<CKRecordZoneID *> *zoneIDsWithUnfetchedServerChanges;
 
 /// Adds to the list of pending record zone changes.
@@ -96,9 +97,11 @@
 
 @end
 
+#pragma mark - CKSyncEngineStateSerialization
+
 /// A serialized representation of a ``CKSyncEngineState``.
 ///
-/// This will be passed to your delegate via ``CKSyncEngineStateUpdateEvent``.
+/// This will be passed to your delegate via ``CKSyncEngine/Event/StateUpdate``.
 /// You should use `NSSecureCoding` to persist this locally alongside your other data and use it the next time you initialize your sync engine.
 API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
 NS_REFINED_FOR_SWIFT
@@ -111,6 +114,8 @@
 
 @end
 
+#pragma mark - CKSyncEnginePendingRecordZoneChange
+
 API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
 NS_REFINED_FOR_SWIFT
 typedef NS_ENUM(NSInteger, CKSyncEnginePendingRecordZoneChangeType) {
@@ -135,6 +140,8 @@
 @property (readonly, assign, nonatomic) CKSyncEnginePendingRecordZoneChangeType type;
 
 @end
+
+#pragma mark - CKSyncEnginePendingDatabaseChange
 
 API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
 NS_REFINED_FOR_SWIFT
diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h
--- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h	2025-04-19 04:15:31
+++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h	2025-05-25 02:08:37
@@ -23,6 +23,8 @@
 #import <CloudKit/CKReference.h>
 #import <CloudKit/CKServerChangeToken.h>
 #import <CloudKit/CKShare.h>
+#import <CloudKit/CKShareAccessRequester.h>
+#import <CloudKit/CKShareBlockedIdentity.h>
 #import <CloudKit/CKShareMetadata.h>
 #import <CloudKit/CKShareParticipant.h>
 #import <CloudKit/CKSubscription.h>
@@ -52,6 +54,7 @@
 #import <CloudKit/CKOperation.h>
 #import <CloudKit/CKOperationGroup.h>
 #import <CloudKit/CKQueryOperation.h>
+#import <CloudKit/CKShareRequestAccessOperation.h>
 
 #pragma mark - Sharing Support
 #import <CloudKit/NSItemProvider+CKSharingSupport.h>
Clone this wiki locally