Why does the listen server player's projectile appear to jitter to the client?

Ive successfully replicated player movement, triggering weapons fire, spawning a projectile, and passing a specific set of custom variables to the projectile spawned.

All the related variables in the projectile appear to get properly set. To the client, the projectile fired by the player acting as the listen server does travel along the correct path.
But to the client it also appears to jitter between its correct server position and attempting to fall to the ground.

Here is the code path from player input on passed projectile spawn:

(There is other code related to setting variables within the character and spell for registering cooldowns, ect. But I removed them from the post for brevity’s sake.)

ADMagicCharacter.CPP

void ADMagicCharacter::OnStartFire()
{
	ActiveSpell = CurrentPrimarySpell;
	DoStartFire();
}

V

void ADMagicCharacter::DoStartFire()
{
	ActiveSpell->OnFire(MuzzleLocation, MuzzleRotation);
}

V

Spell.CPP

void ASpell::OnFire(FVector MuzzleLocation, FRotator MuzzleRotation)
{
	//Projectile Based
	CastLocation = MuzzleLocation;
	CastRotation = MuzzleRotation;
	DoSpellProjectileDelivery(MuzzleLocation, MuzzleRotation);
}

V

BaseProjectileSpell.CPP

void ABaseProjectileSpell::DoSpellProjectileDelivery(FVector MuzzleLocation, FRotator MuzzleRotation)
{
	ServerCreateProjectile(ProjectileClass, FinVector, FinRotator);
}

V

void ABaseProjectileSpell::ServerCreateProjectile_Implementation(TSubclassOf<class AProjectile> SpawnClass, FVector FinVector, FRotator FinRotator)
{
	if (Role == ROLE_Authority)
	{
		UWorld* const World = GetWorld();
		if (World)
		{
			FActorSpawnParameters SpawnParams;
			SpawnParams.Owner = this;
			SpawnParams.Instigator = Instigator;
			SpawnParams.bNoCollisionFail = true;
			SpellProjectile = World->SpawnActor<AProjectile>(SpawnClass, FinVector, FinRotator, SpawnParams);
			if (SpellProjectile)
			{
				FVector const LaunchDir = FinRotator.Vector();
				SpellProjectile->SetSpell(this);//Spell = this;
				SpellProjectile->SetCaster(Caster);//Caster = Caster;
				SpellProjectile->InitVelocity(LaunchDir);
				SpellProjectile->UpdateFlightType((uint8)DeliveryType-1);
				if (DeliveryType == EDeliveryType::DT_SeekingProj) SpellProjectile->bSeeking = true;
				else SpellProjectile->bSeeking = false;
				SpellProjectile->SetLifeSpan(DeliveryRange);
			}
		}
	}
}

V

Projectile.CPP

void AProjectile::UpdateFlightType(uint8 Index)
{
	if (Index == 0) FlightType = EFlightType::FT_Projectile;
	if (Index == 1) FlightType = EFlightType::FT_SeekingProj;
	if (Index == 2) FlightType = EFlightType::FT_FallingProj;

	if (Index == 2)
	{
		ProjectileMovement->ProjectileGravityScale = 1.0f;
	} else
	{
		ProjectileMovement->ProjectileGravityScale = 0.0f;
	}
}

Aside from the jittering, everything appears to be replicated and moving properly.
The projectiles are visible to both players and move along the correct paths for both players, and even explode and display their effects properly for both players.
It is just this odd jittering that that the client sees that I can’t get rid of.
(and it is only on the listen server player’s projectile, the clients own projectile is fine)

Any help would be greatly appreciated.

Resolved.

Adding/Overriding a PostNetReceiveVelocity(const FVector& NewVelocity) function to the projectile removed the jitter.

Gunna leave this up incase others need the info.