You should never depend on collision being 1:1 on server / client (network data is compressed and rounded off to save bandwidth), choose one and run your events off of it. As far as the button syncing, currently it would be up to your to sync the button state when your chosen authority detects the change, that actually goes for all of the interactibles, I leave it up to the end user to choose a sync method, whether to automate had been something I haven’t made a solid choice on yet, its been at the back of my list to think about for some time now.
You can SetButtonState to sync if you need too, normally for it to be perfect you actually wouldn’t want anything but your chosen authority even running the button logic. So usually would mean that you would want it server auth and not toggle-able on clients.
If you want it server auth a decently quick fix would be to override the IsValidOverlap function and return false if not on an authority connection, and return parent if it is. Then sync button state when it changes and set the button to replicate position (or not).
Edit I could see a use case for a CanSetState function or boolean that would allow the button to follow but not state change locally though.
I remember that being brought up recently as a newish issue, but I haven’t actually had a scene capture do it for me.