The customLoadingScreen argument in both TeleportService:Teleport and TeleportService:TeleportAsync usually has some sort of ScreenGui or whatnot sent to it, however in cases where an Instance that cannot be cloned is sent as an argument, the teleport function is forever stuck on that failed teleport.
Example video showcasing permanent teleport failure:
Code in the video:
local TeleportService = game:GetService("TeleportService")
local Teleport = TeleportService.Teleport
local ExampleInvalidGui = game -- anything that can't be cloned
warn(pcall(Teleport, TeleportService, game.PlaceId, game:GetService("Players").LocalPlayer, nil, ExampleInvalidGui))
-- teleportservice is forever stuck on the previous teleport that just failed, so any further teleports in the while loop
-- will error that the previous teleport is in processing forever
while task.wait(1) do
print(pcall(Teleport, TeleportService, game.PlaceId))
end
Even calling TeleportService:Teleport on the server results in the same error, with the failure to teleport the client:
Of course, the same issue applies to TeleportAsync given an incorrect exampleLoadingScreen argument.
System Information (although likely not needed in this case): 11th Gen Intel(R) Core⢠i7-1165G7 @ 2.80GHz, 16.0 GB, Intel(R) Iris(R) Xe Graphics
Place Reproduction File:
TeleportDemo.rbxl (56.9 KB)
Expected behavior
I expect that future attempts to teleport will succeed, instead of being permanently stuck on the teleport that errored.