event.OnClientEvent:Connect(function(player, request)
if request == "Add" then
if not list:FindFirstChild(player.Name) then
local templateClone = template:Clone()
templateClone.Visible = true
templateClone.Parent = list
end
end
end)
You fire it when they just join, but local scripts may not have loaded yet and been replicated. Consider waiting a couple seconds for the player to load, or fire it when the character spawns using .CharacterAdded:Wait().
The server script is loaded first, before the player’s UI is loaded. I’m assuming the local script is in PlayerUI, so the event is fired before the event listener is registered.
My suggestion is that you add a :WaitForChild for the local script, or for the UI.