For some reason, the server side has everything loaded but the client side has some things missing. So when I use :WaitForChild it just infinitely yields.
I’ve tried using
repeat wait() until game.Loaded or game:IsLoaded()
but it seems to still not work. Is it potentially some sort of rendering problem?
Yes, this is what happens when workspace.StreamingEnabled is true. This is done for performance, however you must reference anything in the workspace using :WaitForChild().