Xcode
// Avoid common Xcode mistakes — signing issues, build settings traps, and cache corruption fixes.
$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
nameXcode
descriptionAvoid common Xcode mistakes — signing issues, build settings traps, and cache corruption fixes.
metadata[object Object]
Signing Issues
- "Automatic" signing still needs team selected — set in Signing & Capabilities
- Provisioning profile mismatch — bundle ID must match exactly, including case
- "No signing certificate" — open Keychain, check certificate is valid and not expired
- Device not registered — add UDID in developer portal, regenerate profile
- CI/CD needs manual signing — automatic doesn't work in headless builds
Derived Data Corruption
- Random build failures after Xcode update — delete
~/Library/Developer/Xcode/DerivedData - "Module not found" but it exists — clean Derived Data, restart Xcode
- Stale cache symptoms — builds work, then fail, then work again
xcodebuild cleannot enough — sometimes must delete DerivedData manually
Build Settings Hierarchy
- Project → Target → xcconfig → command line — later overrides earlier
$(inherited)to append not replace — forgetting it removes parent settingsSWIFT_ACTIVE_COMPILATION_CONDITIONSfor Swift flags — notOTHER_SWIFT_FLAGSGCC_PREPROCESSOR_DEFINITIONSfor Obj-C — add to existing, don't replace
Archive vs Build
- Archive uses Release config by default — build uses Debug
- "Works in simulator, fails in archive" — check Release build settings
- Archive requires valid signing — build doesn't for simulator
SKIP_INSTALL = YESfor frameworks — or archive includes them incorrectly
Capabilities and Entitlements
- Capability in Xcode must match entitlements file — out of sync causes crashes
- Push notifications need both — App ID capability AND provisioning profile
- Associated domains needs apple-app-site-association file — hosted on your server
- Keychain sharing needs explicit group — default is just your app
Dependencies
- SPM and CocoaPods can conflict — watch for duplicate symbols
- Pod update vs install —
installuses Podfile.lock,updateignores it - "Framework not found" — check Framework Search Paths, embed vs link
- SPM package resolution fails — delete Package.resolved, reset package caches
Common Fixes
- Build fails with no clear error — check Report Navigator for details
- Simulator stuck —
xcrun simctl shutdown all, thenxcrun simctl erase all - Indexing stuck — delete Index folder in DerivedData
- Autocomplete broken — restart Xcode, if persists delete DerivedData
CLI Builds
xcodebuild -showBuildSettingsto debug — see resolved values-allowProvisioningUpdatesfor CI with auto-signing — needs keychain access-destinationmust be exact —platform=iOS Simulator,name=iPhone 15xcrun altooldeprecated — usexcrun notarytoolfor notarization