I know you selected a solution, but you could try doing it manually is what I wanted to say.
local rs = game:GetService("RunService")
local function apply_impulse(assembly, force) -- assembly is char, force is a vector3
local parts = assembly:GetChildren()
for i=#parts,1,-1 do if not parts[i]:IsA("BasePart") then table.remove(parts,i) end end
local times, con = 3,nil
con = rs.Stepped:Connect(function(time,dt)
local vel = force/times
times = times - 1
for i,v in ipairs(parts) do
v.Velocity = vel*v:GetMass()
end
if times<=0 then con:Disconnect() end
end)
end
Thanks for the help, but unfortunately this has the same hiccup effect, I have done a couple of tests and I the issue stems from how roblox replicates the forces that nteract with my ragdoll constraints, because the server sees it as it should be, but the clients see it with the hiccup.