Best method to use for Animation Replication?

I’ve set up basic replication for a game based on the First Person Template (shooting/taking damage/dying etc, all the basic stuff works), and I’ve hooked up jump and crouch animations.

The movement-related anims more or less automatically replicate because they are handled in a state machine, but I’m wondering what the best method is to replicate the rest of the anims like shooting, reloading, etc.

Using RPCs for everything seems overly complicated. Should things be driven by state machines in the anim blueprint as much as possible?