Scope of a singleton
In a travel app, a global SessionManager.shared holds auth, cache, analytics, and experiment values all at once, and that makes testing hard. How would you decide what can stay a singleton and what has to move to initializer injection?