I have no idea what is happening here I just turned off ResetOnSpawn for some ScreenGui and now the WaitForChild is waiting forever when the button already exist in the player GUI
local NextButton = script.Parent
local ClassSelection = NextButton.Parent
local PlayerGui = ClassSelection.Parent
local Customization = PlayerGui:WaitForChild("Customization")
local NextButton = Customization:WaitForChild("NextButton")
Note: the script is over 355 line