CKShare(rootRecord:) Returns Share with Nil Root Even When All CloudKit Best Practices Followed (iOS 26.2.1)

I’m seeing an issue with CloudKit sharing in iOS 26.2.1: When I call CKShare(rootRecord:) with a brand-new record in a fresh custom zone, the share is created with no root attached (rootFromShare == nil). After saving both the root and share in a single CKModifyRecordsOperation, fetching the share from the server still shows no root reference (rootRecordID == nil). No errors are thrown, but sharing simply fails.

Key facts: • Custom zone created and confirmed (sharing enabled, capsRaw=7/15) • Brand-new record type and fresh IDs each run • Never reusing records or shares • Saving both root and share together in one operation • No default zone usage; always custom private zone

Tested: • Multiple devices, iCloud accounts, and app versions • Both simulator and physical device

Debug logs consistently show: • SHARE_CREATE_SHARE_LOCAL ... rootFromShare=nil • After save/fetch: rootRecordID=nil on server

Has anyone seen this? Is there a new CloudKit regression in iOS 26.x, or am I missing something subtle? Minimal sample project and full debug logs available if needed.

Any insights or workarounds would be hugely appreciated!

Did you try to save the root record (to ensure it exists on the server side) before saving the CKShare? If you did and the issue is still there, please share your minimal project that demonstrate the issue.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

CKShare(rootRecord:) Returns Share with Nil Root Even When All CloudKit Best Practices Followed (iOS 26.2.1)
 
 
Q