Xcode 14 deprecates bitcode - but why?
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.
In mid-2022, Apple announced the release of Xcode 14, which saw the deprecation of Bitcode. This decision marks a significant shift in the development paradigm for iOS and macOS apps. Bitcode was introduced in 2015 at WWDC, with the promise of future-proofing applications by allowing Apple to re-optimize apps without needing to rebuild them. So why did Apple decide to deprecate such a groundbreaking feature? This article explores the reasoning, implications, and technical details behind this decision.
Understanding Bitcode
Bitcode can be thought of as an intermediate representation of a compiled program, akin to a halfway point between source code and machine code. When developers submitted apps to the App Store with Bitcode enabled, Apple could re-optimize the app binaries for different hardware architectures without needing developers to resubmit their code.
Advantages of Bitcode
- Future-proofing: Applications could be automatically optimized for newer architectures without developer intervention.
- Smaller Binary Size: By deferring the final compilation stages, Apple could perform optimizations that resulted in smaller binaries.
Disadvantages of Bitcode
- Upload Size: Initial Bitcode uploads to the App Store could be larger, as they included all architecture slices.
- Limited Control: Developers had less oversight over the final binary and how it was optimized.
- Build Complexity: The Bitcode submission and recompilation process added complexity to the App Store submission pipeline.
Reasons for Deprecating Bitcode
Simplifying the Build Process
One of the primary reasons for deprecating Bitcode is to simplify the build and submission process. By removing Bitcode, the build process is streamlined, allowing developers to have a more direct approach to optimization and binary management.
Maturation of Compilation and Binary Management Tools
Since the introduction of Bitcode, there have been significant advancements in compilers and native code optimization tools. The need for Bitcode as an intermediary has diminished because modern tools provide direct optimizations and better compiling efficiencies.
Reducing Reliability Issues
While Bitcode had its advantages, there were occasional issues with binary re-optimizations that could introduce unexpected behavior. By removing Bitcode, Apple aims to minimize these challenges and improve the overall reliability of app behavior across different devices.
Focus on Stability and Performance
Apple has been focusing heavily on improvements in stability and performance. By deprecating Bitcode, developers can fine-tune optimizations specifically for their app, leading to higher performance and stability whilst removing the potential variability introduced by recompilation processes.
Implications for Developers
Immediate Action Required
Developers need to ensure that their projects do not rely on Bitcode for future updates. This involves disabling Bitcode in project settings and ensuring all necessary architecture slice optimizations are handled manually.
App Size Management
Without Bitcode, app developers must pay closer attention to app binary size. It may involve adopting newer, more efficient APIs or libraries and considering resource footprint more carefully.
Manual Optimization
Developers may now need to dive into aspects of optimization previously managed by Apple. Using tools like Instruments, developers can analyze performance and memory usage to ensure that their apps run efficiently on all targeted hardware.
Architecture-Specific Build Profiles
The absence of Bitcode calls for specific build configurations for different architectures. Developers need to ensure that their build process effectively caters to all device types and models their app supports.
Technical Example
Here is a technical example that shows how developers can disable Bitcode in their Xcode projects:
- Open your project in Xcode.
- Navigate to the "Build Settings" tab of your project configuration.
- Search for "Enable Bitcode".
- Set the "Enable Bitcode" option to `No`.
Related reading
- Xcode 6 with Swift super slow typing and autocompletion
- Xcode keeps building storyboard after each keystroke
- Xcode Simulator animations extremely slow when played in editor
- XMLHttpRequest used to find quicker server
- Xcode 14 needs selected Development Team for Pod Bundles
- Xcode 15 Unable to boot the Simulator
- YCSB for Cassandra 3.0 Benchmarking
- You Don't Know JS Async and Performance - cooperative concurrency?

DSA Fundamentals
Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.