I have all Meshpart stored in ServerStorage. The first time I need a part, inside the server Script I parent it to ReplicatedStorage. Then (within LocalScript) I clone the ReplicatedStorage to workspace. So far so good.
However, when I run this in the game, Meshpart sometimes takes 1 second to appear, even after Clone(). So I thought Clone() yields.
Here you can see there is a delay between I click on an item in the GUI and the MeshPart effectively appears on the screen (I put it in slow-motion for a better understanding):
It happens ONLY THE FIRST TIME I click the item. The second time on, the render is immediate.
You could try preloading? Aka just having a copy of each model loaded already to workspace and on the players mouse for say 0.1 seconds or so and then delete them. That way whenever the player actually wants to use them you wouldn’t have a loading delay. This is just an idea as i have no real understanding of how your script works.
The MeshParts are stored on purpose in ServerStorage, so that this prevents the game from loading all parts unnecessarily, consuming a lot of initial game loading time. In this way, the part will be replicated to the player’s workspace only when requested.
The problem is only visual, according to the GIF I put.
I don’t want to load all MeshParts in advance. But I also don’t want this delay when MeshPart is selected.