One player consistently experiences jitter while the other remains smooth when connected via rope constraint

I have a grab system that creates an invisible length 0 rope constraint between a players hand and what they grab. I am trying to get it to work with player grabs, to do this I set both players network ownership to nil. It seems regardless of ping one player is consistently jittery while the other is smooth. This issue appears in both studio testing and in real servers with each client running on a different device. The only hint I have right now is it seems to be whoever joins first is the jittery one. In studio testing say you have three players, P1 always jitters when in a grab P2 is smooth interacting with P1 but jitters with P3 and P3 is always smooth. in real server testing it seems the client who joins first jitters.

The jitter is the same client regardless of if they are the grabber/get grabbed, they also visually jitter on all clients not just their own. The jittering player also seems to have less influence, if walking opposite directions the smooth player wins out but there is a noticeable slowdown compared to the jittery player not trying to resist (basically jittery client still has some input but less). I have tested this with 0 ping, 250 ping on all clients, differing ping across clients, it doesnt seem to correlate to ping at all.

note that in the video the left client is the one experiencing jitter (player1).

What does the code looks like that sets up the rope constraint?

local function makeAttachment(part, worldCFrame)
	local att = Instance.new("Attachment")
	att.CFrame = part.CFrame:ToObjectSpace(worldCFrame)
	att.Parent = part
	return att
end

local handAttachment = makeAttachment(arm, arm.CFrame * CFrame.new(HAND_OFFSET))
local anchorAttachment = makeAttachment(anchorPart, CFrame.new(worldPoint))

local wristPull = Instance.new("RopeConstraint")
wristPull.Attachment0 = handAttachment
wristPull.Attachment1 = anchorAttachment
wristPull.Length = 0
wristPull.Restitution = 0
wristPull.Visible = false
wristPull.Parent = arm

I dont think the issue lies in the rope setup itself as its pretty standard, I don’t understand why seemingly identical clients are differing in jitter/not jitter though