Having the same problem. Regardless of whether I'm using ObservedObject or EnvironmentObject. Eventhough I see the position updating (the trace below is coming), there is no call to updateUIView, except the view is opened the first time or if the orientation changes. public let objectWillChange = PassthroughSubject<Position,Never>() @Published var position = Position() { willSet { print("Update position", newValue) objectWillChange.send(newValue) } }