What changed when Xcode 14 deprecated bitcode, and how should a legacy iOS build adapt?
Instruction: Explain bitcode as a historical distribution mechanism, identify the Xcode 14 boundary, and describe the implications for build settings and release debug symbols.
Updated
Example answer
Bitcode is an intermediate representation used in an older Apple distribution workflow that allowed server-side recompilation. It is historical build knowledge, not a feature to enable for a current app.
Xcode 14 deprecated bitcode and stopped including it by default for iOS, tvOS, and watchOS. Apple states that the App Store no longer accepts bitcode submissions from Xcode 14 and strips bitcode from IPAs containing it before submission. It also stopped providing downloadable App Store-generated debug symbols for submissions made with Xcode 14; older bitcode submissions are a separate case.
When maintaining a legacy project, inspect inherited build settings and dependency artifacts instead of enabling bitcode to silence an old build assumption. Keep the release archive and matching dSYMs from the build that produced the distributed binary, and verify crash symbolication with matching UUIDs. Rebuild, sign, and test dependencies for the supported target architectures and toolchain.
Bitcode never justified assuming Apple would fix application-level security vulnerabilities automatically. Dependency and application fixes still require the developer's release process and testing.
Source
Xcode 14 release notes: bitcode deprecation and debug-symbol changes.