When are Mutable Customizable Objects recompiled for a build?

Just trying to get more information on when Mutable recompiles Customizable Objects that change indirectly. For example, if I’ve updated a skeletal mesh that referenced in a Customizable Object, should I always checkout + recompile it or is this handled during the build process? I’ve seen a crash happen on a development build recently where the Customizable Object was not recompiled in this scenario.

Steps to Reproduce

Hey there,

Customizable Objects compile in two main areas. When you cook, we compile. When you load a CO either via the editor or via PIE, a process checks to see if it requires compilation, and then it compiles it automatically.

Would you happen to have any more information about the crash you saw? We have implemented a few crash fixes in versions 5.6 and 5.7 as Mutable entered beta.

Dustin

[mention removed]​ Spent a little more time digging into the error. So to give an idea of what things look like I’ve got a skeletal mesh with cloth, and a customizable object setup to use cloth. Im hitting an error in CustomizableObjectInstance.cpp here only when the game is cooked and not in PIE.

Here’s the error:

[2025.09.30-20.59.57:983][407]LogOutputDevice: Error: Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:E:\project\Engine\Source\Runtime\Core\Public\Containers\Array.h] [Line: 783] 
Array index out of bounds: 589 into an array of size 421

Where in the code something is happening I believe:

				const TArray<FMeshToMeshVertData>& SectionClothMappingData = SectionWithCloth.MappingData;
				for (int32 Idx = 0; Idx < SectionVerticesNum; ++Idx)
				{
					if (RenderVertexUtilizationBuffer[Idx])
					{
						const uint16* Indices = SectionClothMappingData[Idx].SourceMeshVertIndices;
 
						VertexUtilizationBuffer[Indices[0]] = 1;
						VertexUtilizationBuffer[Indices[1]] = 1;
						VertexUtilizationBuffer[Indices[2]] = 1;
					}
				}

For some reason the vert count and buffer size are different . Not entire sure why though. Mesh was updated, but geometry is identical to the previous version. Cloth data just seems corrupt, but removing/remaking it still causes this crash to happen.

There were a couple fixes in this area to handle some crashes and errors on cooking with cloth.

https://github.com/EpicGames/UnrealEngine/commit/117d5e266d7c7e859a50b9272cd7584fb43a85be

https://github.com/EpicGames/UnrealEngine/commit/06a6f5df4f8c9417d2ff1269fe17a9451755f3cb

You could look into these to help. If those don’t work for you, we have made some pretty significant changes to cloth in Mutable for 5.6 by moving it into its own plugin, and I’ll need to do some more searching.