I would wrap the UserSettings type inside an observable class and then use that class as an environment value
@Environment(SettingsManager.self) var settingsManager
Then this manager object could be made to handle all loading, updating and saving of the UserSettings object internally to have only one single source of truth.
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: