New GameSave API unexpected behavior

Hi, I'm implementing the new iOS 26 GameSave API in my game and I'm seeing an unexpected behavior when I try to handle custom conflict resolution. Here's what happens:

directoryState.conflictedVersions is nil when directoryState.state is GSSyncStateConflicted. According to the API docs, this should never happen because there is no way to resolve the conflict.

Here's the setup: I have 2 devices. Device 1 - iPad 10G iOS 26.5, and Device 2 - iPhone SE 3G iOS 26.5 and I run the same code on both devices.

  1. I disable the WiFi on device 2 to create a conflict
  2. I open the directory using [GSSyncedDirectory openDirectoryForContainerIdentifier: nil]
  3. Run [dir finishSyncingWithCompletionHandler:]
  4. After the callback returns I check dir.directoryState.state
  5. If the state is GSSyncStateReady, GSSyncStateOffline, or GSSyncStateLocal I write some data in a file and close the dir.
  6. I re-enable the WiFi on Device 2 and run the same code
  7. Now, on Device 2 dir.directoryState.state is GSSyncStateConflicted, as expected, but dir.directoryState.conflictedVersions is NIL and there is no way to continue and resolve the conflict. I'm expecting dir.directoryState.conflictedVersions to contain an array of GSSyncedDirectoryVersion objects as described in the API docs.

One interesting bit is that if I replace [dir finishSyncingWithCompletionHandler:] with [dir finishSyncing: window completionHandler:] the UI conflict resolution works as expected.

I'm using Objective C to call the API, if that matters. I've also reported via Feedback Assistant with Feedback Number: FB22790831

New GameSave API unexpected behavior
 
 
Q