If you add a delay on the Client the role probably is no longer ROLE_Authority it just isn’t updated on BeginPlay.
Instead of calling SetReplicates(true)
at BeginPlay you should do bReplicates = true
in the constructor. SetReplicates(true) is used when you dynamically want to turn Replication on and off but the constructor should be used if you want replication to be on from the start.