I’ve also tried (and failed) multiple ways to get VMs to communicate with each other in a clean way. It ultimately ends up in a mess, where you have to remember to sync one value with both VMs, and then hope it doesn’t kick of a chain of cyclic updates, or similar such synchronization problems as that. What this strategy lacks is a “source of truth” for that data
The best solution I’ve found is, as Ilan and Kiran mentioned, to lift that shared data out of the ViewModels and into a shared Repository that’s a dependency of both VMs. The Repository holds onto its shared data as a StateFlow, which both VMs can observe.