I believe having application state defined independently of the UI components is very helpful in separating concerns. I can debug the state of the application as data only, without needing to dive in to the UI components hierarchy. UI is just a representation of that state and there can be more than one such representation.
Singleton isn't bad if it is used only for reading the data. Mutable global state is the problem.