Repositoryがオンメモリキャッシュを扱うかどうかに関わらず、僕はSingle source of truthとなる状態を扱うMainActorを設けるようにしています。より具体的には、Repository - Store - (ViewModel) - Viewという構造にしていて、Viewを超えて保持する状態を(MainActorである)Storeで保持しています。ViewModel(またはViewModelを省略してViewの状態や変更をViewが直接扱う場合はView)がStoreに対してデータの更新を要求すると、Storeは必要に応じてRepositoryを介してデータを取得し、自身の状態(@Published
なプロパティ)を更新する形です。 Repositoryはあくまでデータアクセスを抽象化するためのものなので、キャッシュの有無は外から不可知なのが良いかと思います。なので、たとえRepositoryがオンメモリキャッシュを持っていてもStoreに相当するものは必要だと思いますし(Repositoryのキャッシュは状態を扱っているわけではないと思うので)、Store的なものがあればそれをMainActorにすることでUI(ViewまたはViewModel)から同期的にアクセスすることができます。