Hi there!
This is my first post, so I apologize if I miss some kind of rule/social-norm
The problem as I see it is that you aren’t using any form if Linear Interpolation (Lerp).
Setting the rotation will do exactly that, suddenly snap the view to the rotation, this isn’t going to be too great a problem if it is client-side as the “snapping” happens frequently, but latency and alike means synchronization will cause “jitteryness”, to create a smoother movement you want to have a “end rotation” direction, and Lerp the result over time every-tick, until the object is pointing in the direction you want.
I didn’t have any code to hand, but I gained the following snippet from here : Smoothly Rotate Actor - Programming & Scripting - Unreal Engine Forums
if (ShouldTurn)
{
FVector MyLoc = GetActorLocation();
FVector TargetLoc = PlayerCharacter->GetActorLocation();
FVector Dir = (TargetLoc - MyLoc);
Dir.Normalize();
SetActorRotation(FMath::Lerp(GetActorRotation(),Dir.Rotation(),0.05f));
}