Я не работал с compose, так, только смотрел пару раз, так что не подскажу тут🤷♂. Мне оптимальным видится room - livedata/flow. При очень большом желании можно listener передавать при создании, который уже будет обновлять данные из созданной viewmodel