Projectile behaves oddly when spawned as opposed to when it is placed in level.

I have an arrow projectile that I want to fly directly to the target. I have the rotation follows velocity set to true on the projectile movement component, but instead of rotating towards the velocity it does the stutter step sideways thing that you can see in the video.
It is also supposed to stop when it reaches the target. But instead it reaches the target and then moves forward
All of these behaviors operate correctly when I place the arrow into the level before I hit play. But when I spawn the arrow it behaves oddly.
I have a print string that tells me when the arrow is supposed to stop. The arrow that is placed in the world stops when it gets to its target and will print “Server: stopped” as well as “Client: Stopped”. The arrow that is spawned only says “Server: stopped” as you can see in the video. So im not sure if its a replication issue. I have set the projectile component to replicate as well as replicating the arrow actor and setting its movement to replicate.