Ok, I have few screens, I navigate to them and pass some id. This id could be null. If this id is null, then I don't want to create instance, lets call it A, that gets to pass in my ViewModel. I get it with getOrNull() koin function. Providing logic of instance A in the shared scope, which links to the fragment's scopes. Also I load module with shared scope by using loadKoinModules() function when I navigate to the screen. Than I did smth like loadKoinModules(getMySharedScope(ID)). In this function I wrote smth like if (id != null) scoped<A>().