Updating the character rotation in the custom camera

If the character goes backwards, it starts twitching, and it looks even worse for other players, what can this be related to? One person told me that it may be related to the mismatch of physics and rendering fps, but even if you replace RenderStepped with Heartbeat, the character will still twitch, but already in other players, and the alternative in the form of AlignOrientation does not look very and updates slowly, occurs with some delay, please suggest a solution
Camera module code:

local RunService, UserInput, Players = game:GetService("RunService"), game:GetService("UserInputService"), game:GetService("Players")
local LocalPlayer = Players.LocalPlayer

local Rad = math.rad

local MinXLimit, MaxXLimit = -math.huge, math.huge
local MinYLimit, MaxYLimit = -80, 80

local CameraAngle = Vector2.zero
local MouseBehavior = Enum.MouseBehavior.LockCenter

local TransparentAccessoryTypes = {
	
	Enum.AccessoryType.Hat, 
	Enum.AccessoryType.Hair,
	Enum.AccessoryType.Face, 
	Enum.AccessoryType.Eyebrow, 
	Enum.AccessoryType.Eyelash, 
	Enum.AccessoryType.Unknown, 
	Enum.AccessoryType.Front,
	Enum.AccessoryType.Neck,
	Enum.AccessoryType.Back
	
}

local Camera = workspace.CurrentCamera

local AdvancedCameraModule = {}

local function UpdateCharacter()
	
	local Character = LocalPlayer.Character
	local Root = Character.PrimaryPart
	for i, object in pairs(Character:GetDescendants()) do
		
		if (object:IsA("BasePart") and (object.Name == "Head" or object.Name == "UpperTorso" or (object.Parent.ClassName == "Accessory" and table.find(TransparentAccessoryTypes, object.Parent.AccessoryType)))) or object:IsA("Decal") then
		 
			object.Transparency = 1
			
		end
		
	end
	
	Root.CFrame = CFrame.new(Root.Position) * CFrame.Angles(0, -Rad(CameraAngle.X), 0)
	
end

function AdvancedCameraModule.Update(deltaTime: number)
	
	local Character = LocalPlayer.Character
	if not Character then
		
		return
		
	end

	local Head = Character:FindFirstChild("Head")
	if not Head then
		
		return
		
	end
	
	UserInput.MouseBehavior = MouseBehavior
	
	local MouseDelta = UserInput:GetMouseDelta()
	CameraAngle = Vector2.new(
		
		math.clamp(CameraAngle.X + MouseDelta.X, MinXLimit, MaxXLimit),
		math.clamp(CameraAngle.Y + MouseDelta.Y, MinYLimit, MaxYLimit)
		
	)
	
	Camera.CFrame = CFrame.new(Head.Position + Head.CFrame.LookVector * .55 + Head.CFrame.UpVector * .25) * CFrame.Angles(0, -Rad(CameraAngle.X), 0) * CFrame.Angles(-Rad(CameraAngle.Y), 0, 0)
	UpdateCharacter()
	
end

local function Init()
	
	RunService:BindToRenderStep("CameraControl", Enum.RenderPriority.Camera.Value + 1, AdvancedCameraModule.Update)
	
end

return AdvancedCameraModule, Init()