# How to solve Xcode error "The i386 architecture is deprecated."
## Summary
- Deprecated i386 architecture prevented macOS app release builds
- Project settings contained legacy 32-bit Intel (i386) architecture references
- Debug builds succeeded due to "Build Active Architectures Only" masking the issue
- Resolution required manual removal of i386 from build settings
## Root Cause
- Legacy project configured with explicit `ARCHS = i386 x86_64` override
- `$(ARCHS_STANDARD)` no longer includes i386 in modern Xcode versions
- Project.pbxproj file contained frozen ARCHS settings from its creation era
- Release builds build all architectures (`Build Active Architecture Only = NO`)
## Why This Happens in Real Systems
- Projects migrated across Xcode versions retain outdated build settings
- Old .xcodeproj files persist architecture settings indefinitely
- "Build Active Architecture Only = YES" delays discovery during debugging
- Cross-platform compatibility concerns led to historical i386 inclusion
- Documentation gaps between evolving ARCHS_STANDARD definitions
## Real-World Impact
- Blocks App Store submission due to build failures
- Delays modernization of business-critical legacy applications
- Creates developer frustration with opaque build system errors
- Prevents ARM64 release builds from being generated
- Risks prolonged use of deprecated debug-only builds in production
## Example or Code
In project.pbxproj (located in `YourProject.xcodeproj`):
```ruby
/* Problematic setting */
ARCHS = i386; /* Remove this line */
VALID_ARCHS = "i386 x86_64"; /* Change to x86_64 */
In Xcode Build Settings:
// Before (Explicitly defined)
ARCHS = i386 x86_64
// After (Modern configuration)
ARCHS = x86_64 arm64
How Senior Engineers Fix It
- Audit build settings via terminal using:
xcodebuild -project YourProject.xcodeproj -showBuildSettings | grep ARCH - Remove explicit
i386references:- Xcode UI: Build Settings → Architectures → Delete
i386 - Text editor: Remove from project.pbxproj (
ARCHS = i386)
- Xcode UI: Build Settings → Architectures → Delete
- Verify architecture support matrix:
- Keep
arm64(Apple Silicon) +x86_64(Intel 64-bit)
- Keep
- Update
VALID_ARCHStox86_64 arm64 - Set “Build Active Architecture Only” to NO universally during final release
- Confirm using
lipo -archson output binary:lipo -archs AppName.app/Contents/MacOS/AppName
Why Juniors Miss It
- Over-reliance on Xcode UI without understanding .pbxproj internals
- Misinterpreting
$(ARCHS_STANDARD)as evergreen without validation - Not auditing build settings through CLI tools
- Focusing only on scheme configurations
- Assuming debug settings apply universally
- Unfamiliarity with macOS architecture evolution