Why isn't the View protocol @MainActor?

Hi,

It is known that if a SwiftUI view contains an @ObservedObject or @StateObject property, the View will inherit @MainActor isolation from the property wrappers.

Similarly, the body view-builder is also marked @MainActor.

What I'm wondering is why the whole SwiftUI View protocol isn't marked @MainActor. It seems to be a deliberate decision, but AFAICT it would make a lot of sense for all data and operations defined in a view to have main-actor isolation unless marked nonisolated.

I'm currently adding @MainActor annotations to an existing codebase, and it's a bit awkward that some views automatically gain this attribute one way or another, while others need it explicitly applied. Is there a rationale that can be shared, or is this something which may be revised in future versions of the framework?

See What’s new in SwiftUI - WWDC 2024 around 17:30. Instead of annotating the View.body with MainActor, now the View protocol is on main actor.

Why isn't the View protocol @MainActor?
 
 
Q