Server/Client side desynce for custom NPC

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    I have a custom character made and rigged in blender and I’ve scripted it to wander a short distance in a random direction every ten seconds. It “works?”…

Picture of the NPC.
Screenshot_1381

NPC during playtesting, on the client side.
Screenshot_1382

NPC during playtesting, same time, on the server side.
Screenshot_1383

  1. What is the issue? Include screenshots / videos if possible!
    By “Works?” I mean it only works/moves around on the server side. Client side sees no movement from it other than the custom animations I’ve made for it. Even those are glitched on the client side, but work completely fine on the server, making the entire character “jitter”, like it would repeatedly start the animation then halt it immediately after during the times where on the server the character would move around. But lets just focus on making it move, that’s my real concern.

  2. What solutions have you tried so far? Did you look for solutions on the Developer Hub?

I haven’t tried anything, but I’m just researching.

I’ve looked through the following posts.

This post in particular shows the most relevance to my issue but no confirmed solution was given.

This post also showed possible relevancy. Since it was a bug report, no official fixable solutions were given, but some insight was given as to perhaps the nature of this. The answer given by ROBLOX staff was posted far before my issue. Unsure if it still has any actual relevancy.

This was not related but piqued my attention enough while searching. The given answer(s) are things I already did.

After that, you should include more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!

This is the only script I have enabled, for basic wandering.

local PathFindingService = game:GetService("PathfindingService")

local humanoid = script.Parent:WaitForChild("Humanoid")
local torso = script.Parent:WaitForChild("HumanoidRootPart")
local npc = script.Parent

while true do
	wait(10)
	local randomx = math.random(-10,10)
	local randomz = math.random(-10,10)
	local roamdestination = script.Parent.HumanoidRootPart.Position + Vector3.new(randomx,0,randomz)		

	local path = PathFindingService:CreatePath()
	path:ComputeAsync(script.Parent.HumanoidRootPart.Position, roamdestination)
	local waypoints = path:GetWaypoints()
	for i, waypoint in pairs(waypoints) do
		npc.Humanoid:MoveTo(waypoint.Position)
	end
	humanoid:MoveTo(roamdestination)
end

Keep in mind I rely on the roblox dev wiki for 70% of my coding help. if my code is bad or inefficient, I already expect that. I would appreciate constructive criticism to improve.