You would put your loading script into ReplicatedFirst
, this allows it to load and run before everything else has a chance to load in. If you place a LocalScript inside ReplicatedFirst, that LocalScript will execute immediately when the player enters the game. This allows you to place a GUI inside the LocalScript, which can be parented to PlayerGui. Since the GUI was in ReplicatedFirst with the LocalScript, it has already been loaded and will be visible when it is placed into PlayerGui. You may have to preload assets with PreloadAsync if you have any images or assets within your GUI. Make sure you load these using the script inside ReplicatedFirst, so that these take immediate priority when a user joins the game.
This should hopefully clear up some of your confusion on how you would make the loading screen appear immediately.