Hi,
I just released a major update to my app that includes a lot of SwiftUI, with a minimum deployment target of iOS15. I've been tracking this one crash that only seems to happen for devices running iOS16 or iOS16.1. I can't track down what is causing this, but this is the crash report I get ... any tips would be helpful.
Here's the crash report which might help:
Date/Time: 2024-06-13T13:27:41.999Z
Launch Time: 2024-06-12T20:47:48Z
OS Version: iPhone OS 16.1.1 (20B101)
Report Version: 104
Exception Type: SIGTRAP
Exception Codes: TRAP_BRKPT at 0x18301cd7c
Crashed Thread: 0
Thread 0 Crashed:
0 libswiftCore.dylib 0x000000018301cd7c Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 312
1 SwiftUI 0x000000018e0bdc50 OUTLINED_FUNCTION_15 + 1196
2 SwiftUI 0x000000018e0bdef4 OUTLINED_FUNCTION_15 + 1872
3 SwiftUI 0x000000018d4f0508 OUTLINED_FUNCTION_2 + 9436
4 UIKitCore 0x000000018b4200a0 -[UICollectionReusableView _preferredLayoutAttributesFittingAttributes:] + 140
5 UIKitCore 0x000000018b4ac9ec -[UICollectionViewListCell _preferredLayoutAttributesFittingAttributes:] + 236
6 UIKitCore 0x000000018b3806a8 -[UICollectionView _checkForPreferredAttributesInView:originalAttributes:] + 156
7 UIKitCore 0x000000018b5114d4 -[UICollectionView _createPreparedSupplementaryViewForElementOfKind:atIndexPath:withLayoutAttributes:applyAttributes:] + 800
8 UIKitCore 0x000000018ba5abb4 -[UICollectionView _createAndAppendViewAnimationsForExistingAndDeletedAuxiliariesInCurrentUpdate:disappearingAnimations:animationsForOnScreenViews:newSubviewManager:oldVisibleViews:] + 1432
9 UIKitCore 0x000000018b5170dc -[UICollectionView _viewAnimationsForCurrentUpdateWithCollectionViewAnimator:] + 356
10 UIKitCore 0x000000018ba5d2b8 __102-[UICollectionView _updateWithItems:tentativelyForReordering:propertyAnimator:collectionViewAnimator:]_block_invoke.744 + 264
11 UIKitCore 0x000000018b386564 +[UIView(Animation) performWithoutAnimation:] + 72
12 UIKitCore 0x000000018b66873c -[UICollectionView _updateWithItems:tentativelyForReordering:propertyAnimator:collectionViewAnimator:] + 1384
13 UIKitCore 0x000000018b667d58 -[UICollectionView _endItemAnimationsWithInvalidationContext:tentativelyForReordering:animator:collectionViewAnimator:] + 9016
14 UIKitCore 0x000000018b5c57bc -[UICollectionView _performBatchUpdates:completion:invalidationContext:tentativelyForReordering:animator:animationHandler:] + 516
15 SwiftUI 0x000000018d308674 OUTLINED_FUNCTION_7 + 10744
16 SwiftUI 0x000000018cbffef8 OUTLINED_FUNCTION_326 + 7604
17 SwiftUI 0x000000018cd4afa0 OUTLINED_FUNCTION_620 + 720
18 UIKitCore 0x000000018b386564 +[UIView(Animation) performWithoutAnimation:] + 72
19 SwiftUI 0x000000018d3084bc OUTLINED_FUNCTION_7 + 10304
20 SwiftUI 0x000000018cc57234 OUTLINED_FUNCTION_263 + 2444
21 UIKitCore 0x000000018ba5ea38 -[UICollectionView _updateAnimationDidStop:finished:] + 1228
22 UIKitCore 0x000000018ba5e150 __147-[UICollectionView _startViewAnimationsWithContext:oldVisibleViews:reorderedViewAttributesTable:viewAnimator:viewAnimationsCompletedDispatchGroup:]_block_invoke + 32
23 UIKitCore 0x000000018ba7d3f4 __47-[UICollectionViewAnimation startWithAnimator:]_block_invoke_3 + 268
24 UIKitCore 0x000000018c389334 __UIVIEW_IS_EXECUTING_ANIMATION_COMPLETION_BLOCK__ + 32
25 UIKitCore 0x000000018b426808 -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:] + 632
26 UIKitCore 0x000000018b425764 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 432
27 UIKitCore 0x000000018b424e84 -[UIViewAnimationState animationDidStop:finished:] + 192
28 QuartzCore 0x000000018a838fec CA::Layer::run_animation_callbacks(void*) + 228
29 libdispatch.dylib 0x0000000190771fdc _dispatch_client_callout + 16
30 libdispatch.dylib 0x00000001907807f4 _dispatch_main_queue_drain + 924
31 libdispatch.dylib 0x0000000190780444 _dispatch_main_queue_callback_4CF + 40
32 CoreFoundation 0x00000001892326f8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
33 CoreFoundation 0x0000000189214058 __CFRunLoopRun + 2032
34 CoreFoundation 0x0000000189218ed4 CFRunLoopRunSpecific + 608
35 GraphicsServices 0x00000001c2516368 GSEventRunModal + 160
36 UIKitCore 0x000000018b6f73d0 -[UIApplication _run] + 884
37 UIKitCore 0x000000018b6f7034 UIApplicationMain + 336
38 CJournal 0x0000000102ae4060 main (main.m:20)
39 ??? 0x00000001a7880960 0x0 + 0
Post
Replies
Boosts
Views
Activity
Hi,
I am planning to add a In-App Event for a major update to my app. The Create In-App Event page in App Store Connect seems to want a "Event Deep Link", and I'm not sure how to generate that. I've read about universal links but they seem complicated, and I just want the users to be able to open my app, I don't want a custom landing page in the app. Can I pass in the URL scheme for my app, or something else that's super-simple and gets the job done (like the App Store URL for the app)?
Hi,
I updated my iPad to iOS18 beta 1, and it seems to crash my app immediately, even though it's the App Store release version that's running fine on iOS17. The crash report points to some issue in NSManagedObjectContext performBlockAndWait:
Thread 2 name: Dispatch queue: NSManagedObjectContext 0x303498000: CJCloudKitItemsUploaderQueue
Thread 2 Crashed:
0 libsystem_kernel.dylib 0x1f1930254 __pthread_kill + 8
1 libsystem_pthread.dylib 0x2285fcef8 pthread_kill + 268
2 libsystem_c.dylib 0x1a9a76ad8 abort + 128
3 CJournal 0x105428818 0x104e28000 + 6293528
4 CJournal 0x1054261f4 0x104e28000 + 6283764
5 CoreFoundation 0x1a1c40a3c __handleUncaughtException + 660
6 libobjc.A.dylib 0x19eec8210 _objc_terminate() + 132
7 CJournal 0x1053f5ad0 0x104e28000 + 6085328
8 libc++abi.dylib 0x22852087c std::__terminate(void (*)()) + 16
9 libc++abi.dylib 0x228520820 std::terminate() + 108
10 libdispatch.dylib 0x1a99bd174 _dispatch_client_callout + 40
11 libdispatch.dylib 0x1a99cc7b8 _dispatch_lane_barrier_sync_invoke_and_complete + 56
12 CoreData 0x1a9c94a6c -[NSManagedObjectContext performBlockAndWait:] + 264
13 ContactsJournalDataKit 0x10643fb50 -[CJCloudKitModifyRecordsOperation createUnderlyingCKModifyRecordsOperationWithProcessList:withLimit:] + 408
14 ContactsJournalDataKit 0x10643f544 -[CJCloudKitModifyRecordsOperation main] + 848
15 Foundation 0x1a071e2e0 __NSOPERATION_IS_INVOKING_MAIN__ + 16
16 Foundation 0x1a071c530 -[NSOperation start] + 648
17 Foundation 0x1a07947a0 __NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION__ + 16
18 Foundation 0x1a07943ec __NSOQSchedule_f + 172
19 libdispatch.dylib 0x1a99cc350 _dispatch_block_async_invoke2 + 148
20 libdispatch.dylib 0x1a99bd160 _dispatch_client_callout + 20
21 libdispatch.dylib 0x1a99c0610 _dispatch_continuation_pop + 596
22 libdispatch.dylib 0x1a99bfc40 _dispatch_async_redirect_invoke + 580
23 libdispatch.dylib 0x1a99cedf4 _dispatch_root_queue_drain + 392
24 libdispatch.dylib 0x1a99cf5f8 _dispatch_worker_thread2 + 156
25 libsystem_pthread.dylib 0x2285f9c40 _pthread_wqthread + 228
26 libsystem_pthread.dylib 0x2285f6488 start_wqthread + 8
Can anyone shed some light on this? I haven't rebuilt the app with Xcode 16 yet, just wanted to run the App Store version and see if it's compatible without doing anything.
Hi,
I am trying to migrate my custom intents to App Intents, and was running into some issues. My current intentdefinitions file and all intent handling code are in a framework that is shared with my app target. I went through the migration assistant and added the App Intents codes directly to my main app target. When I run a shortcut with the App Intent, it doesn't work ... I get some messages in the console that say:
Could not find an intent with identifier MyCustomAddContactIntent, mangledTypeName: Optional("")
I guess the old custom intents and new App Intents should both live in the same package to see each other. In this case, I'm not sure if all the existing custom intents file and all the intents handler logic should be moved into the main app bundle (and removed from framework), or should I add the new App Intents handlers into the framework (in addition to the main app)?
Also, will the custom framework even be needed or run in iOS16+?
Thanks.
Hi,
I am trying out the new UITabBar stuff in iOS18, and I don't think it'll be a good fit for my app. Is there a way to revert to the old iPad UITabBar look and placement that we've been using before? I don't want to make such a big change like this just yet, but I would need to make other changes to the app as well and I don't want to use the new UITabBar just yet. Is there a way to achieve this?
I have a UITableView which contains a UICollectionView in the first row. It used to work fine in iOS17, but now I get a crash when running with Xcode 16 / iOS18 beta:
Expected dequeued view to be returned to the collection view in preparation for display. When the collection view's data source is asked to provide a view for a given index path, ensure that a single view is dequeued and returned to the collection view. Avoid dequeuing views without a request from the collection view. For retrieving an existing view in the collection view, use -[UICollectionView cellForItemAtIndexPath:] or -[UICollectionView supplementaryViewForElementKind:atIndexPath:]
This is my UITableView delegate call:
AddEditDataCell *cell = nil;
if (indexPath.section == 0) {
if (indexPath.row == 0) {
AddEditDataContactsCell *contactNameCell = (AddEditDataContactsCell *)[self cellForContactNamesCollectionAtIndexPath:indexPath tableView:tableView];
return contactNameCell;
- (AddEditDataContactsCell *)cellForContactNamesCollectionAtIndexPath:(NSIndexPath *)indexPath tableView:(UITableView *)tableView {
AddEditDataContactsCell *contactsCell = (AddEditDataContactsCell *)[self.tableView dequeueReusableCellWithIdentifier:@"ContactsCell" forIndexPath:indexPath];
if (self.collectionNameCell == nil) {
self.collectionNameCell = [contactsCell.collectionView dequeueReusableCellWithReuseIdentifier:@"LogContactNameCollectionCellIdentifier" forIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
contactsCell.nameCellDelegate = self;
}
contactsCell.frame = CGRectZero;
[contactsCell setNeedsLayout];
[contactsCell.collectionView reloadData];
contactsCell.collectionViewHeightConstraint.constant = contactsCell.collectionView.collectionViewLayout.collectionViewContentSize.height;
[contactsCell.collectionView.collectionViewLayout invalidateLayout];
return contactsCell;
}
Hi,
I have a List and I want to limit the dynamic text size for some of the elements in the list's row item view. I created a test view below. The ".dynamicTypeSize(.large)" restriction only works if it's applied to the List view, not if it's set for the the ContentItemView in the ForEach below.
Is there a reason for this? Do I need to do something else to limit a list row to a certain size? The example only has a text field, but I want to do this for a Image with some text inside it, and I wanted to restrict that text field, but it doesn't seem to work when the view is inside a List row.
Please let me know if there's a workaround for it.
import SwiftUI
import CoreData
struct ContentView: View {
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)],
animation: .default)
private var items: FetchedResults<Item>
@State private var multiSelectedContacts = Set<Item.ID>()
var body: some View {
NavigationStack {
List (selection: $multiSelectedContacts) {
ForEach(items) { item in
ContentItemView(item: item)
}
.dynamicTypeSize(.large) // <-- doesn't works
}
.dynamicTypeSize(.large) // <-- THIS WORKS
}
}
}
struct ContentItemView: View {
@Environment(\.managedObjectContext) private var viewContext
@ObservedObject var item: Item
@State var presentConfirmation = false
var body: some View {
HStack {
if let timestamp = item.timestamp, let itemNumber = item.itemNumber {
Text("\(itemNumber) - \(timestamp, formatter: itemFormatter)")
}
}
.popover(isPresented: $item.canShowPopover, content: {
Text("Test Item Label")
.frame(width: 100, height: 150)
})
}
}
private let itemFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .long
return formatter
}()
#Preview {
ContentView().environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
}
Hi,
I have a UIBarButtonItem that I create with a UIMenu, and it's added to the navigation bar:
self.rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd menu: [self createMenuForAddItem]];
self.navigationItem.rightBarButtonItems = @[self.rightButton];
The menu shows fine when a user clicks on the bar button.
Now I want to also show this menu programmatically, for e.g if the user opens the app for the 5th time, the menu from the bar button item shows automatically, without the user having to explicitly press the button. How do I achieve this?
I want to display a list of 'contacts' in my app, loaded from a local Core Data sqlite database. Currently, I use UIKit, and with UITableView's cell reuse, even with 5000+ rows, the memory usage is great ... it loads at about 80MB and stays around that no matter how much I scroll up or down the list.
I implemented the same list with SwiftUI List, and the memory usage while scrolling is very different ... the initial load is about the same, but each time I go down the whole list, it adds 20-30MB to the memory usage (according to Xcode).
Is this a side-effect of using SwiftUI's List, or am I doing something wrong here?
Here's the implementation:
struct CJContactsListView: View {
@SectionedFetchRequest var sectionContacts: SectionedFetchResults<String, Person>
init() {
let fetchRequest = Person.allContactsFetchRequest()
_sectionContacts = SectionedFetchRequest(fetchRequest: fetchRequest, sectionIdentifier: \.normalizedSectionLetter!, animation: .default)
}
var body: some View {
List {
ForEach(sectionContacts) { section in
Section(header: Text(section.id)) {
ForEach(section) { person in
CJContactsListLabelRowView(person: person)
}
}
}
}
.listStyle(.plain)
}
}
struct CJContactsListLabelRowView: View {
@ObservedObject var person: Person
var body: some View {
HStack (alignment: .center, spacing: 8) {
VStack (alignment: .leading){
if let displayName = person.displayName {
Text(displayName).font(.headline)
}
if let companyName = person.companyName {
Text(companyName).font(.subheadline).foregroundColor(.secondary)
}
}
}
}
}
extension Person: Identifiable {
public var id: String {
return self.objectID.uriRepresentation().absoluteString
}
public static func allContactsFetchRequest() -> NSFetchRequest<Person> {
let request = Person.fetchRequest()
request.sortDescriptors = Person.makeSortDescriptors()
request.predicate = NSPredicate(format: "(isContactArchived == nil || isContactArchived == 0)")
request.fetchBatchSize = 100
request.relationshipKeyPathsForPrefetching = ["tags"]
return request
}
}
There isn't a visible performance issue in my testing (i.e. I don't see a 'stutter' when scrolling really fast), but the memory profile growing does concern me, especially when this isn't a problem in UIKit.
I've tested the "Earthquakes" sample project from Apple and it seems to display the same issue (memory profile grows substantially as the user scrolls down the list).
Would love to know if there's a way to avoid this issue.
Hi,
I am building a List with a list of files saved in my app. I also want this to accept drops of multiple types of files (images, audio, PDFs, Excel, Pages etc) ... basically anything that be dragged-and-dropped from the iOS system or apps like Mail, iCloud Drive etc. I'm trying to find a good way to handle this.
The best I've come across is adding the onInsert option to accept UTTypes, like this:
List {
...
}
.onInsert(of: [UTType.data], perform: dropAction)
But now I'm not sure how I can load the object that was dropped here. From some examples I've seen, If I registered the UTType.image instead, I could load it in the dropAction handler like this:
item.loadObject(ofClass: UIImage.self) { image, _ in
DispatchQueue.main.async {
print("Image type dropped")
}
}
But how does that work for 'data' types. Or am I supposed to list out all the data types separately?
Hi,
I am running into a reproducible SwiftUI List crash when using @FetchRequest based on an @ObservedObject. The crash happens only when deleting the last item in a section. All other deletes and inserts (that I've tested so far) seem to work fine. I'm hoping I can figure out why this happens, and if there is a workaround that I can use.
The crash looks something like this:
*** Assertion failure in -[SwiftUI.UpdateCoalescingCollectionView _endItemAnimationsWithInvalidationContext:tentativelyForReordering:animator:collectionViewAnimator:], UICollectionView.m:10643
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to delete item 17 from section 0 which only contains 17 items before the update'
The setup: I have a Core Data one-to-many relationship ... in this case, a Contact that has many Notes saved to it. When you select a Contact from a list, it goes to a ContactDetailsView which has some details of the contact, and a list of 'notes' saved to it.
struct ContactDetailsView: View {
@Environment(\.managedObjectContext) private var viewContext
@ObservedObject var contact: Contact // -> making this 'let' works
var body: some View {
VStack (alignment: .leading) {
Text(contact.firstName ?? "")
Text(contact.lastName ?? "")
NotesListView(contact: contact)
Button("Add Test Notes") {
let note1 = Notes(context: viewContext)
note1.noteMonth = "Feb"
note1.noteDetails = "Test1"
note1.noteDate = Date()
note1.contact = contact
try? viewContext.save()
}
}
.padding()
}
}
The NotesListView has a @SectionedFetchRequest (the error is the same if I use a regular @FetchRequest).
struct NotesListView: View {
@Environment(\.managedObjectContext) private var viewContext
@ObservedObject var contact: Contact // -> making this 'let' works
@SectionedFetchRequest var sectionNotes: SectionedFetchResults<String, Notes>
@State private var selectedNote: Notes?
init(contact: Contact) {
self.contact = contact
let fetchRequest = Notes.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "contact == %@", contact)
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "noteDate", ascending: true)]
_sectionNotes = SectionedFetchRequest(fetchRequest: fetchRequest, sectionIdentifier: \.noteMonth!)
}
var body: some View {
List (selection: $selectedNote){
ForEach(sectionNotes) { section in
Section(header: Text(section.id)) {
ForEach(section, id: \.self) { note in
VStack (alignment: .leading){
if let details = note.noteDetails {
Text(details)
}
}
.swipeActions {
Button(role: .destructive, action: {
delete(note: note)
}, label: {
Image(systemName: "trash")
})
}
}
}
}
}
}
public func delete(note: Notes){
viewContext.delete(note)
do{
try viewContext.save()
} catch{
print("delete note error = \(error)")
}
}
}
Calling the delete method from swipe-to-delete always crashes when the note is the last item on the list.
In the ContactDetailsView, and it's child view NotesListView I have marked the 'var contact: Contact' as an @ObservedObject. This is so that changes made to the contact can be reflected in the ContactDetailsView subviews (the name fields here, but there could be more). If I make both of these properties let contact: Contact, I don't get a crash anymore! But then I lose the 'observability' of the Contact, and changes to the name won't reflect on the Text fields.
So it seems like something about @ObservedObject and using a List in its subviews is causing this problem, but I'm not sure why. Maybe the @ObservedObject first reloads its relationship and updates the view, and then the FetchRequest also reloads the List, causing a double-delete? But it surprisingly only happens for the last element in the list, and not otherwise.
Another option I considered was losing the @FetchRequest and using contact.notes collection to drive the list. But isn't that inefficient compared to a @FetchRequest, especially with sorting and filtering, and loading the list of 1000s of notes?
Any suggestions for a work-around are welcome.
The full crash looks something like this:
*** Assertion failure in -[SwiftUI.UpdateCoalescingCollectionView _endItemAnimationsWithInvalidationContext:tentativelyForReordering:animator:collectionViewAnimator:], UICollectionView.m:10643
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to delete item 17 from section 0 which only contains 17 items before the update'
*** First throw call stack:
(
0 CoreFoundation 0x0000000180491128 __exceptionPreprocess + 172
1 libobjc.A.dylib 0x000000018008412c objc_exception_throw + 56
2 Foundation 0x0000000180d1163c _userInfoForFileAndLine + 0
3 UIKitCore 0x0000000184a57664 -[UICollectionView _endItemAnimationsWithInvalidationContext:tentativelyForReordering:animator:collectionViewAnimator:] + 4020
4 UIKitCore 0x0000000184a62938 -[UICollectionView _performBatchUpdates:completion:invalidationContext:tentativelyForReordering:animator:animationHandler:] + 388
5 SwiftUI 0x00000001c51f0c88 OUTLINED_FUNCTION_249 + 5648
....
39 TestCoreDataSwiftUISections 0x000000010248c85c $s27TestCoreDataSwiftUISections0abcdE3AppV5$mainyyFZ + 40
40 TestCoreDataSwiftUISections 0x000000010248c998 main + 12
41 dyld 0x0000000102625544 start_sim + 20
42 ??? 0x00000001027560e0 0x0 + 4336214240
43 ??? 0x2103000000000000 0x0 + 2378745028181753856
Hi,
Is there some limit for how many recordIDs we can fetch in CKFetchRecordsOperation? There doesn't seem to be any batching or cursor support built in to the API. So if I pass in 5000 recordIDs, it'll work fine?
Would love to get some confirmation either ways so I can better plan for it.
Thanks!
Hi,
I have recently noticed that it's taking my app a long time between the CKModifyOperations being 'completed' in the app, and for the record to actual show up through either looking at the CloudKit dashboard, or by using CKQueryOperations. The whole upload can take 10-15 minutes or more, from the time the CKOperation has completed to the time I can see all the records on the dashboard. The 'upload' seems to be happening in chunks ... for e.g. if I uploaded a 100 records, if I check after 2 minutes the query will show 20 records, and then 35-40 a bit later, and after 10+ minutes will show all 100 records (exact numbers vary of course). This was never an issue before, but has recently been reported by a couple of users of my app, and I need to know what's going on before it balloons into a big thing. And it's highly problematic, because it leads to users not being able to download the records that they uploaded on the first device.
Is there something in CloudKit servers that have changed recently? Can someone in the CloudKit team take a look? I filed a Feedback, along with CloudKit profile logs: FB13537245
I can also reproduce the issue in production as well as development environments.
Hi,
I have a few extensions for my iOS app: Share Extension, Widget extensions, Notification Extensions, Today Extension, WatchKit app. My app and all the extensions share data by loading the same Core Data sqlite database from a shared folder. One problem I'm having with this setup is with a Core Data lightweight migration. On updating the app to the new database model, I would like my main app to first make a backup of the database before the migration runs. But one of the app extensions always seems to run before the main app, and ends up performing the lightweight migration on the database file before the main app has a chance to backup the database sqlite file.
I can just prevent the lightweight migration from happening when an app extension loads the persistent store (and only do lightweight migrations from the main app), but it might end up in a situation with incompatible formats for the extension, so I'm looking for a sturdier solution.
When an app is installed (or an update to the app is installed), is there a way to check and control the order of the extensions that is installed / loaded by the system? That would help control the problem.
Hi,
My app has been receiving a huge increase in the number of CKHTTPStatus=503 errors over the past couple of months. I created a thread before, and also a Feedback (FB13300807) over a month ago, but I haven't gotten any assistance on this, and am wondering if there is any better way to get the attention of a CloudKit engineer who might be able to help.
From my users, I was able to print out the error code and error userInfo in the console:
error.code == 15 (the same as CKErrorServerRejectedRequest),
UserInfo={ContainerID=, CKHTTPStatus=503, RequestUUID=17C6B9B9-35DD-411B-8AED-7A497075D228, OperationID=5285362CCD2DDB32}}, CKHTTPStatus=503}
How can I get this issue addressed? A lot of users are reporting this issue and it's creating a big support burden.