PreloadAsync does not preload SurfaceAppearance objects

Calling ContentProvider:PreloadAsync() on a SurfaceAppearance object does not actually preload it. Parenting a SurfaceAppearance to a meshpart after attempting to preload it still results in visual pop-in

surfaceappearance preload repro.rbxl (45.2 KB)


Thanks for the report; We’ll follow up when we have an update for you.

1 Like

Hey, has this been fixed yet? My game has a part with neon material that uses SurfaceAppearance (to simulate water) and it flashes for a while cause of the textures loading once you first join a server, which can look bad for new players and be annoying.

There was something about this a few months ago where certain fields of SurfaceAppearance and MaterialVariant cannot be access by scripts. What I’m doing is going through the different types of objects, gathering all the mesh, sound, decal ids and placing them on a list and then sending that list to the client to be loaded. It was mentioned that those are not supported by ContentProvider:PreloadAsync()

Allow read access to texture properties in SurfaceAppearance and MaterialVariant

It’s in one of the replies.