@ComputedProperty vs copying values SwiftData AppEntity

I'm setting up App Entities for my SwiftData models and I'm not sure about the best way to reference SwiftData model properties in the AppEntity.

I have a SwiftData model with many properties:

@Model
final class Contact {
    @Attribute(.unique) var id: UUID = UUID()
    var name: String
    var phoneNumber: String
    var email: String
    var website: URL?
    var birthday: Date?
    var notes: String
    // ... many more properties
}

I want to expose these properties on my AppEntity so they're available for system features, such as giving Apple Intelligence more context about on-screen content.

struct ContactEntity: AppEntity {
    var id: UUID
    
    @Property(title: "Name")
    var name: String
    
    @Property(title: "Phone")
    var phoneNumber: String
    
    @Property(title: "Email")
    var email: String
    
    // ... all the other properties
}

I couldn't find guidance in the documentation for this specific situation. I've considered two approaches:

  • Add @Property variables to the AppEntity for each SwiftData model property and copy all values from the SwiftData model to the AppEntity in the AppEntity initializer — but I recall this being discouraged in previous WWDC sessions since it duplicates data and can become stale

  • Use @ComputedProperty to fetch the model and access the single properties — this seems like an alternative, but fetching the entire model just to access individual properties doesn't feel right

What is the recommended approach when SwiftData is the data source? Thank you!

@ComputedProperty vs copying values SwiftData AppEntity
 
 
Q