Is it safe to create a custom leaderboard purely on the client or do I need to handle certain aspects on the server?
If you’re making a custom leaderboard UI, the client can handle that. But any actual changes to the stats of which your leaderboard would be referencing should be handled server-side.
Such as people joining, leaving, etc?
If it’s just for a playerlist, then a LocalScript will be perfectly fine. All Gui is handled by LocalScripts anyway.
Ok cool. I just wanted to make sure that populating the teams, etc on the list was good from client. Obviously I’ll use the server to detect team changes for other players
To put it simply, the server should be the only side actually changing any values. The client can read from that and update the playerlist accordingly.
I should also point out that in general, the server should also only be doing the bare minimum. Which would include handling remotes and secure data, and anything else that the client might be unable to do. Everything else should be handled by the client.