I'm really struggling with FE in several areas. Currently, I have made a third person camera localscript that locks the mouse in the middle of the screen and uses delta from the mouse to turn the player(by CFraming the humanoidrootpart). However, FE doesn't let me do this through a localscript (obviously), so I make a simple remote event between the client and server. The client does all the calculations and sends the final numbers to the server to update the CFrame, but this still creates lag/jittering. How can I fix this? In general, can I even make "smoothness" with filtering enabled? These are my scripts:

Server

local remote = game.ReplicatedStorage:WaitForChild("Remote")
	local updateChar = remote:WaitForChild("UpdateChar")
	
updateChar.OnServerEvent:connect(function(player, u1, cf1, u2, cf2)
	player.Character:WaitForChild("Humanoid").AutoRotate = false
	u1.C0 = cf1
	u2.CFrame = cf2
	print("serverUpdate")
end)

Client

--There is more code before and after but the lag only started when I switched to remote event
local u1 = chr.Head.Neck
local cf1 = CFrame.new(0,1,0)*input.NeckAngle
			
local u2 = chr.HumanoidRootPart
local cf2 = chr.HumanoidRootPart.CFrame*CFrame.Angles(0,math.rad(inputObject.Delta.x*(input.ms/25))*-1,0)
			
updateChar:FireServer(u1, cf1, u2, cf2)