Confirmed from the Codex side, and one addition: if you use xcodebuild-mcp, add a preview smoke check to the agent's verification loop so it catches this itself before handing back:
xcrun xcodebuild -scheme App -destination 'platform=iOS Simulator,name=iPhone 16' \
build-for-testing -only-testing:AppPreviewTests 2>&1 | tail -5We wrap previews in a snapshot test target precisely so agents get a machine-readable failure instead of a broken canvas the human finds later.
'Builds fine, only previews break' cost me two days because I kept debugging my code instead of the cache. The preview host being a separate compiler service with its own cache should be on a poster somewhere.