RealityView update closure not executed upon state change

I have the following piece of code:

@State var root = Entity()
var body: some View {
    RealityView { content, _ in
        do {
            let _root = try await Entity(named: "Immersive", in: realityKitContentBundle)
            content.add(_root)
            // root = _root   <-- this doesn't trigger the update closure
            Task {
                root = _root // <-- this does
            }
        } catch {
            print("Error in RealityView's make: \(error)")
        }
    } update: { content, attachments in
        // NOTE: update not called when root is modififed
        // unless root modification is wrapped in Task
        print(root)
        // the intent is to use root for positioning attachments.
        
    } attachments: {
        Text("Preview")
            .font(.system(size: 100))
            .background(.pink)
            .tag("initial_text")
    }

} // end body

If I change the root state in the make closure by simply assigning it another entity, the update closure will not be called - print(root) will print two empty entities. Instead if I wrap it in a Task, the update closure would be called: I would see the correct root entity being printed.

Any idea why this is the case?

In general, I'm unsure the order in which the make, update and attachment closures are executed. Is there more guidance on what we should expect the order to be, what should we do typically in each closure, etc?

https://developer.apple.com/forums/thread/733020 It seems like this @CryptoKoa has seemed to solve this issue although I am having trouble understandind what the Graph is in his code segment, perhaps you could understand it and explain it to me ?

RealityView update closure not executed upon state change
 
 
Q