Vr hands are lagging behind controllers

I’ve been working on a vr game for a while now but there’s one really annoying problem that I don’t know how to fix

when testing I noticed there is extreme delay when moving my controllers
here’s an example:
Vr Controller - Roblox Studio (gyazo.com)

and this is the code I’m using (client side)

local player = game:GetService("Players").LocalPlayer
local character = player.Character
local Head = character:WaitForChild("Head")
local Camera = game.Workspace.CurrentCamera

local starterGui = game:GetService("StarterGui")
local UserInputService = game:GetService("UserInputService")
local VRService = game:GetService("VRService")

HeadScale = 1
Camera.HeadScale = HeadScale

starterGui:SetCore("VRLaserPointerMode", 1)
--starterGui:SetCore("VREnableControllerModels", false)

local LeftHand = character:WaitForChild("LeftHand")
local RightHand = character:WaitForChild("RightHand")

game:GetService("RunService").RenderStepped:Connect(function()
	local cfRH = VRService:GetUserCFrame(Enum.UserCFrame.LeftHand)
	script.RemoteEvent:FireServer("Align",LeftHand,(Camera.CFrame*CFrame.new(cfRH.p*HeadScale))*CFrame.fromEulerAnglesXYZ(cfRH:ToEulerAnglesXYZ()))
	local cfRH = VRService:GetUserCFrame(Enum.UserCFrame.RightHand)
	script.RemoteEvent:FireServer("Align",RightHand,(Camera.CFrame*CFrame.new(cfRH.p*HeadScale))*CFrame.fromEulerAnglesXYZ(cfRH:ToEulerAnglesXYZ()))
end)

The server side is just setting the CFrame of the hand to the one provided in the event

I’m aware that there’s a client server delay but if I have the hands on the client there wouldn’t be a way to detect and hold objects.

The only way to fix it would be to set the hands on the client, while still replicating them to the server.

but wouldn’t any object the player holds lag behind?

You would have to rework holding the objects so when they pick something up it signals the client so the item doesn’t lag

You should just be able to set the item position on the client just like the hands

alright i’ll try these out

t h i r t y c h a r a c t e r s

the thing is I’m using an align position constraint so the player doesn’t clip the object through walls and to make it interact with physics objects

although I was able to get the hand delay out

use Part:SetNetworkOwner(player) as it will will replicate on server but run on the client.