SwiftUI's List backed by CoreData using @FetchRequest fails to update on iOS 26 when compiled with Xcode 26

Hey there! I've been tracking a really weird behavior with a List backed by @FetchRequest from CoreData.

When I toggle a bool on the CoreData model, the first time it updates correctly, but if I do it a second time, the UI doesn't re-render as expected. This does not happen if I compile the app using Xcode 16 (targeting both iOS 18 and iOS 26), nor it happens when using Xcode 26 and targeting iOS 18. It only happens when building the app using Xcode 26 and running it on iOS 26.

Here are two demos: the first one works as expected, when I toggle the state twice, both times updates. The second one, only on iOS 26, the second toggle fails to re-render.

Demo (running from Xcode 16):

Demo (running from Xcode 26):

The code:

import SwiftUI
import CoreData

@main
struct CoreDataTestApp: App {
  let persistenceController = PersistenceController.shared
  
  var body: some Scene {
    WindowGroup {
      ContentView()
        .environment(\.managedObjectContext, persistenceController.container.viewContext)
    }
  }
}

struct ContentView: View {
  @Environment(\.managedObjectContext) private var viewContext
  @FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)])
  private var items: FetchedResults<Item>
  var body: some View {
    NavigationView {
      List {
        ForEach(items) { item in
          HStack {
            Text(item.timestamp!.formatted())
            Image(systemName: item.isFavorite ? "heart.fill" : "heart").foregroundStyle(.red)
          }.swipeActions(edge: .leading, allowsFullSwipe: true) {
            Button(item.isFavorite ? "Unfavorite" : "Favorite", systemImage: item.isFavorite ? "heart" : "heart.fill") {
              toggleFavoriteStatus(item: item)
            }
          }
        }
      }
      .toolbar {
        ToolbarItem {
          Button(action: addItem) {
            Label("Add Item", systemImage: "plus")
          }
        }
      }
    }
  }
  
  private func addItem() {
    withAnimation {
      let newItem = Item(context: viewContext)
      newItem.timestamp = Date()
      newItem.isFavorite = Bool.random()
      try! viewContext.save()
    }
  }
  
  private func toggleFavoriteStatus(item: Item) {
    withAnimation {
      item.isFavorite.toggle()
      try! viewContext.save()
    }
  }
}

struct PersistenceController {
  static let shared = PersistenceController()
  let container: NSPersistentContainer
  init() {
    container = NSPersistentContainer(name: "CoreDataTest")
    container.loadPersistentStores(completionHandler: { _, _ in })
    container.viewContext.automaticallyMergesChangesFromParent = true
  }
}
Answered by xmollv in 855496022

This seems to have been fixed on iOS 26 beta 8. Now I can toggle properties and many times as I want and the List updates as expected.

That does look like a regression. Did you file a feedback report yet? If not, I’d suggest that you file one and share your report ID here. Thanks.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

@DTS Engineer This definitely looks like a regression. And yes, I've filed the following feedback: FB19629783.

Thanks for looking into this! 🤞

This seems to still be broken on Xcode 26 beta 6 (17A5305f) and iOS 26 beta 7 (23A5326a). I've updated the Feedback too with this information.

Accepted Answer

This seems to have been fixed on iOS 26 beta 8. Now I can toggle properties and many times as I want and the List updates as expected.

I’m experiencing this issue with @FetchRequest in my app as well (using LazyVGrid instead of List). The above sample code replicates on iOS 26 beta 8 and 9 using the latest Xcode beta, though it seems to not replicate the first time you run the app only subsequent runs fail to update the UI upon changing a managed object a second time. I filed FB20029616 with a sysdiagnose and screen recording from when it replicated in my app.

SwiftUI's List backed by CoreData using &#64;FetchRequest fails to update on iOS 26 when compiled with Xcode 26
 
 
Q