I actually have a solution to this bug, or at least one bug that causes this type of issue.
What is the bug?
This is probably an http-cache related issue (at least for some users, that’s definitely the case, I’m not sure for everyone’s cases though), it occurs for Unions and MeshParts. This is caused by meshes that are going through moderation incorrectly being cached by clients. This basically means, clients cache the asset download in its moderated form (an empty mesh), and, even after the asset goes through moderation, its still improperly cached.
Fix Cache on Android
For android, if you go into the app info under Storage and hit Clear cache, it should fix this issue on Android iirc.
Fix Cache on PC
For PC, the relevant cache for meshes is located under %Temp%\Roblox\http
. In order to fix these issues, I recommend only clearing files from the last two days or so (Basically, sort by date modified and delete recent files), especially if you have a slow connection, otherwise you’ll have to redownload every single cached request which includes meshes, unions, textures, among other things that aren’t even assets, which overall will drastically reduce the speed you load into games for a while.
iOS/MacOS
I am not sure where the equivalent locations are on iOS/MacOS, but, if you’re familiar with them you should find the same folder structure mentioned for PC on MacOS in whatever the standard location is, and for iOS it should just be the app cache.
How do you prevent the cache issue from occurring for players?
To prevent this issue, don’t preload assets that are still going through moderation, and don’t insert anything into your game that has assets still going through moderation until the asset has been moderated. Afaik this bug is only specific to meshes & unions.
In order to see if the asset is going through moderation, OPEN A GUEST/INCOGNITO TAB (This is important, because, if the asset is still going through moderation, you can’t download it as another user, but, you can if you own the asset, hence why you go into a tab where you aren’t technically logged in), take its asset id, and go to https://assetdelivery.roblox.com/v1/asset?id=MESH_ID
How do you see if an asset is moderated?
You will see a response like this if the asset has yet to be approved, otherwise it’ll be downloaded:
What reason might this bug happen?
I suspect it has to do with how Unions and Meshes are moderated.
Based on the different Fidelity properties, new mesh data (including collisions) is generated and it has to go through moderation separate to your mesh asset. However, the mesh id itself does not change, of course. I believe that the client thinks the mesh is not moderated, so it caches what it downloaded, but, since the mesh data itself is still going through moderation it caches the blank version.