It should not do that. For me, it does not do that, and for obbys that I have helped with and used the system, that doesn’t happen. The script itself doesn’t have a 3-second delay, so I am guessing it is because of the server connection. The code that respawns the character and teleports them to the spawnpoint is this one:
local Character = Player.Character
local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart")
HumanoidRootPart.CFrame = ServerScriptService:WaitForChild("PlayerSpawnData"):WaitForChild(Player.UserId).Value.CFrame + Vector3.new(0, 3, 0)
The only delay is >= 0.1 seconds, and that is because we need to wait for the character to load. It hasn’t done that to other games that I used this system in, and it should not (I even tested it with a friend that is laggy and it doesn’t do that).