I’ve tried parenting some things into replicatedfirst after a player joins but it doesn’t seem to replicate. Is this a feature or a bug?
Example Code
local _ = game.Players.NumPlayers > 0 or game.Players.PlayerAdded:wait()
wait(5)
Instance.new('LocalScript', game.ReplicatedFirst) -- this doesn't replicate to any players in the server
Wrong. ReplicatedFirst only replicates one time, which is when the player joins. All further changes will not be replicated. And OP never asked if it parented instances to the Player object.
The main purpose of ReplicatedFirst, is to set the load priority of things inside it, to replicate first when a player joins. This way, the things that NEED to be in the game from the beginning, will get loaded before everything else. If you want to replicate things to the client after the game has started for a client, use ReplicatedStorage.