SetActorHiddenInGame will call MarkComponentsRenderStateDirty, but when the new value is replicated to the clients, the render state is not marked dirty when the change is received.
Call SetActorHiddenInGame on a replicated actor on the server.
Expected: The actor will have its visibility updated on the server and clients.
Actual: The actor's visibility will change immediately on the server, then change on the client after a short delay.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-107566 in the post.