Important: Do note that I do not mean singletons as in having a private constructor and a static instance variable (or as someone suggested a static class), but singletons as returning the same instance from the inversion of control container during the application lifetime.
Many containers use a short life time per default. Either a new instance per dependency (or per request) or an instance per scope (such as a HTTP request).
I'm wondering why containers promote short lived objects instead of long lived?
Do note that I usually only register my services in the container. I register factories in the container if I need to create domain models etc.
Did some more research.
Because it's easier to handle session specific information when using a shorter lifetime. Mixing lifetimes can also complicate things.
Every time you take a scoped dependency in a single instance service it will work fine at start. However, scoped services are typically not designed to be long lived. If they use a external resource like a socket connection or a database connection it will probably be lost at one point.
Since the scoped service is not design for that, it will probably start failing, and therefore the single instance service will also start failing and continue to do that until the application is restarted.