you should use the WaitForChild function because the script is loaded before the children of the PlayerGui
local Players = game:GetService("Players")
local client = Players.LocalPlayer
local Quests = client.PlayerGui:WaitForChild("Quests")
local frame = Quests:WaitForChild("QuestFrame")
It may change when the player respawns, but it will not change their current player gui. If you really want to prove to me that it would work the way you’re saying, go into studio and test it. It won’t work.