Whats the Difference from ServerStorage, ReplicatedStorage, and ReplicatedFirst?

1 Like

ServerStorage is content that can only be accessed by server scripts to local scripts it is empty the objects there are not replicated to the client.
ReplicatedStorage is content that is replicated to the client, this usually holds remoteevents, etc
ReplicatedFirst is just ReplicatedStorage but the objects contained there are the FIRST things replicated to the client other than roblox core scripts


ReplicatedFirst replicates things to the PlayerGui only once unless they rejoin or something
ReplicatedStorage is just stuff shared from the client-server like a shop’s items
ServerStorage is like ServerScriptService but is just another outlet where you can store things

1 Like

my god how do you people reply so quickly

StarterGui is also replicated to PlayerGui

ReplicatedFirst doesn’t replicate anything to the PlayerGui; StarterGui does that


It’s been more than a week, but in this case, should I move RemoteEvents and BindableEvents to ServerStorage then?

No, remote events should stay inside of ReplicatedStorage. If BindableEvents are specifically for server-server communication, then they should/can go into ServerStorage. If the BindableEvents are for client-client communication, they should stay either inside of ReplicatedStorage or some place that has to do with the player.

ServerStorage serves as a repository for objects and assets that only the server needs to know about. As such, items placed inside ServerStorage are not visible to players’ client-side scripts, and only the server can interact with them directly. This makes it an ideal location for storing resources that you want to keep hidden from players, such as enemy AI scripts, tools, or other game mechanisms that you don’t want exploiters to access.

ReplicatedStorage, on the other hand, is designed to hold assets and objects that both the server and all clients might need to access. Items in ReplicatedStorage can be seen and accessed by both the server and players’ client-side scripts. This makes it a suitable location for storing assets that both the server and players need to see, like shared modules, resources, or certain events or remote functions that clients might call.

Finally, ReplicatedFirst is the container for assets that should be replicated to players before anything else when they join the game. Items in ReplicatedFirst are visible to both the server and players, but scripts in ReplicatedFirst will run on the client before scripts in other containers, like StarterPlayerScripts or StarterCharacterScripts. This makes it an excellent location for storing assets that need to be available as soon as possible when a player joins, such as loading screens, initial UI, or other crucial assets.