I’m confused on what you mean by Object:Clone() being unreliable. If the object is placed in the ServerStorage and is unmodified, it should be spawning in the same position each time, very reliably. Could you elaborate more on that?
Lag will always be an issue when moving a group of parts from ServerStorage to the Workspace. If lag is your issue, I recommend simply modifying the model as needed and then resetting each part to a default position instead of duplicating it in-and-out of ServerStorage. It’ll take more code and therefore more effort, but will save you in the long run.
If you’re looking at general lag, I suggest decreasing part count and utilizing StreamingEnabled. Keep in mind, even with all of these enabled/in effect, people with poor PC’s will still experience lag.