Cooking iOS on Windows with Metal Developer Tools results in a Success from the Cook, but app crashes on boot

On our Developer iphones the .ipa crashes without any logs. However when installing it on a Macbook (done usually only for boot tests) it does output an error message. I attached the file to this post.

Steps to Reproduce
Hello,

We have a Horde Setup with multiple agents some Mac and some Windows. We were using Mac agents for the entire iOS Build but we saw that we could use the Metal Developer Tools for cooking iOS on Windows (https://dev.epicgames.com/documentation/en\-us/unreal\-engine/using\-the\-windows\-metal\-shader\-compiler\-for\-ios\-in\-unreal\-engine).

We decided to give it a try and installed the Metal Developer Tools 5.3 on our Windows Agents and changed our Cook Step to use our Windows Agent instead of Mac. This results in a Cook that returns a success. After this we package and sign it to output a .ipa file. However after installing and trying to boot this .ipa file it crashes on boot.

We are trying to retrieve crash logs from it to get more information, but we are wondering if we made some mistake in the setup or misunderstood the article. Is the version incorrect? The article says 2.0 but shows 1.2 in the images, so we assumed it just meant latest stable version of the Metal Developer Tools. Is any other setup required?

Our project uses Xcode 16.4 but the metal developer Tools 5.3 says it’s for Xcode 16.3. Is that maybe the issue? I can try and upgrade to Metal Developer Tools 6.0.

Hi Peter,

Are you able to open the on device crash logs in Xcode? To do so, from Xcode go to Devices and Simulators, select the devices then ‘Open Recent Logs’. If this is done on the development Mac on which the binary was built, Xcode should symbolicate the various thread call stacks and give us a better idea what is wrong.

Best regards.

Unfortunately I don’t think I will be able to symbolicate it. The Development Mac that packages it is an AWS Mac Agent that I don’t have access to. I’ll try to retrieve the crash logs, but I am having issues getting them. I’ll try to post them when I have them.

I managed to get an unsigned version of the app and resigned it to sideload and managed to retrieve the crash. Here it is. It does look to me very similar to the previous crash log I shared.

I captured the console as I did the crash and I managed to capture this:

default	18:22:37.294495-0800	<project>-IOS-Test	[UE] [2025.11.13-02.22.37:294][  0]LogCsvProfiler: Display: Metadata set : deviceprofile="iPhone14Pro"
default	18:22:37.300462-0800	<project>-IOS-Test	[UE] [2025.11.13-02.22.37:294][  0]LogShaders: Error: Missing shader resource for hash 'C4A7BDDB981A8A29184DA0577D42C32DD319A5C9' for shader platform 'METAL_ES3_1_IOS' in the shader library while serializing asset DefaultPostProcessMaterial
default	18:22:37.300550-0800	<project>-IOS-Test	[UE] Fatal error: [File:./Runtime/Engine/Private/Materials/MaterialShared.cpp] [Line: 2905] 
Failed to find shader map for default material DefaultPostProcessMaterial(/Engine/EngineMaterials/DefaultPostProcessMaterial.DefaultPostProcessMaterial)! Please make sure cooking was successful (No inline shaders, null GTSM)
default	18:22:37.300626-0800	<project>-IOS-Test	[UE] [2025.11.13-02.22.37:294][  0]LogMaterial: Error: Tried to access an uncooked shader map ID in a cooked application
default	18:22:37.300851-0800	<project>-IOS-Test	[UE] [2025.11.13-02.22.37:294][  0]LogMaterial: Warning: Invalid shader map ID caching shaders for 'DefaultPostProcessMaterial', will use default material.
default	18:22:37.300947-0800	<project>-IOS-Test	[UE] [2025.11.13-02.22.37:294][  0]Fatal error: [File:./Runtime/Engine/Private/Materials/MaterialShared.cpp] [Line: 2905] 
Failed to find shader map for default material DefaultPostProcessMaterial(/Engine/EngineMaterials/DefaultPostProcessMaterial.DefaultPostProcessMaterial)! Please make sure cooking was successful (No inline shaders, null GTSM)

Seems like, I am somehow not adding the shaders in.

Is there anything that could be causing this missing shader? We haven’t changed anything from our Mac Cook, just the platform we cook on. In addition looking at both xcarchives I can’t see any files that would point to the shader missing. That said, I also don’t know what it would exactly look like.

Hi Peter,

Metai Developer Tools version under UE 5.6 for Windows was 4.4. Please advise if the problem persists on that version.

Best regards.

Hello [Content removed]

Switched over our windows agents to 4.4 Metal Developer Tools, still the same result.

Crash report from 4.4 Cooked App.

Looking at the console capture I don’t see anything related to [UE] anymore. These are the errors I got that seemed related to our project.

Hi Peter,

Looking at the latest crash report it appears the MVG framework is missing from the deployed app bubdke. Is this referenced by a third party or internal plugin?

Best regards.

It is. We turned off the internal plugin and then built it with 4.4 Metal Tools and the generated .ipa did not crash. We do need the plugin so we are currently trying to figure out why this is occurring, but the 4.4 Metal Tools does seem to have been what we were primarily missing. Thank you.

Is it possible to install multiple version of the Metal Developer Tools on the same Build Machine? We are planning to support multiple version of Unreal Engine in the future.

Also, is there any way to make the Cook throw an error if the wrong version of Metal Tools is used? Currently we do not realize the .ipa is faulty until we test it out on a device.

Hi Peter,

It is possible to install multiple versions of Metal Dev Tools on a single machine. You can then point to the correct install root of the tools on a per project basis using:

/Script/IOSRuntimeSettings.IOSRuntimeSettings
WindowsMetalToolchainOverride=/path/to/metal/toolchain/version

Having the cook validate the version is technically possible. We’ll discuss with the development team and get back to you.

Best regards.