With StreamingEnabled set to false, you are pretty much guaranteed that everything present on the server will be replicated to the client before normal LocalScripts can run (excluding ReplicatedFirst LocalScripts).
Instances added mid-game are a different story. Regardless of your setting, they are replicated in parts like it’s StreamingEnabled, so you have to spam WaitForChild on their children to get everything you want.
My current solution for those is to parent an Instance under ReplicatedStorage for a few seconds, to give clients enough time to download it, and then parent it where it needs to be. This makes it appear to replicate all-at-once. However, this method becomes unreliable on extremely bad connections.
In the future, I would like to use a JSON-based list of children that is transmitted to clients for a given object, such as a map, so that LocalScripts can recursively wait until the entire structure is downloaded before using it. It’s not as simple as either of us would like, but it’s the best I can think of for simplifying replication-handling later on.