How can I best observe changes to my app data model and sync them across shareplay?

I have my app state separated by sub classes for the shared state and the local state. I'd like to observe changes to teh shared state and sync that with other users in the shareplay. I'm very comfortable with synchronization implementations.

I'm looking at @Observed and @Model; both look promising.
Also looking at reflection to enumerate the properties, but feels like overkill.

I need to observe properies that change, gather the changes, and perform my sync and colision resolution. Then apply received/resolved changes back to the local model.

I appreciate pointed in the right directions and pitfalls to avoid.