Crouch functions not replicating correctly

I am using the default crouching functions, which everything I’ve read says should handle replication on its own, but for some reason it doesn’t work in my project. If the host crouches everything works fine, but if the client crouches their feet sink into the floor, the capsule doesn’t half height, and the animation doesn’t update. I’ve tried so many different combinations of RPCs and using both the 'is crouching" function from the movement component and the “IsCrouched” variable from the character and neither seems to work. I also tried to create my own variable for crouching and RPC that to force the crouch animation, but the client was still partially under the floor and I’d rather get the default function to work properly. What am i missing here?

Something must be wrong with my character because I decided to move on to work on the aim offset and that isn’t replicating properly either. Here I’ve tried updating the pitch a few ways in the anim BP. Again, the host updates properly, but the client does not.

“Replication” is a Server to Client process. Taking an Authoritative State and passing it to all relevant clients.

Communication from Client to Server is facilitated by RPCs. When a client executes an action it needs to notify the server. This is done by manually sending an RPC.

Client Input → Can I Crouch (conditional check) [True] → Crouch → RPC Server

Server RPC → Can I Crouch (conditional check) [True] → Crouch

Like this? I’m getting the same result.