Issue 41
😱 Did your app get rejected this week?
As you will know by now, earlier this week on the 1st of May, Apple started enforcing that all apps that use certain system APIs had to provide a privacy manifest file declaring a reason for their usage.
Since the announcement of this new requirement and up until this week, whenever you uploaded a new app to App Store Connect that used one of the required usage APIs without describing the reason in its privacy manifest file, Apple would send you a reminder email to add the reason to the app’s privacy manifest.
As of this week though, if you have tried to upload a new version of your app and failed to comply with this requirement, you will have faced an App Store rejection for the following reason: ITMS-91053: Missing API declaration 🛑.
Worry not though, as it is straightforward to fix and this issue contains all the information you need to make your app compliant again! 🌟
CI/CD providers latest software versions
Latest available Xcode and macOS versions on popular mobile CI/CD providers.
16.2 (16C5032a)
15.1 (24B2083)
16.2 (16C5032a)
15.2 (24C101)
16.2 RC (16C5031c)
15.1 (24B2083)
16.2 RC (16C5031c)
15.1.1 (24B91)
16.2 Beta (16B5100e)
14.6
16.2 (16C5032a)
14.6.1 (23G93)
15.4 (15F31d)
14.6.1 (23G93)
16.0 (16A242d)
14.5 (23F79)
🔍 Comparing Appcircle and Bitrise: Which DevOps Tool Builds Faster? (Sponsored)
In the fast-paced world of mobile app development, build time is a game changer. Lengthy build times disrupt workflows and slow down progress.
AppCircle has put a lot of effort into improving its build caching performance by introducing new caching implementation methods that provide a more reliable and efficient compilation environment. In this article, they compare their new implementation’s performance with Bitrise caching.
🔨 Generate privacy manifests automatically with this website
As of earlier this week (specifically the 1st of May), Apple requires all apps that use certain system APIs to provide a privacy manifest file declaring the reason for their usage.
Creating these files can be a somewhat arduous and tedious task that Donny has made a lot easier with a new site called privacymanifest.dev. On this new website, you can select which APIs you use and get a ready-to-use privacy manifest file. If you are interested in learning more about why you need these privacy manifests and how to create them manually, Donny has also written an article on the topic.
✂️ Finding and deleting dead code using ReaperAI
The team at Emerge Tools have announced a tool to help you find and delete dead code from your codebase called ReaperAI. It uses dynamic runtime analysis to detect unused code in production and can automatically create Pull Requests with code removal for you!
I have not yet been able to try it out but I have very high hopes as most tools that I have tried in the past such as Periphery always lacked a lot of context that ReaperAI might have and resulted in showing a lot of false positives and requiring a lot of manual work and validation.
📹 Challenges of Using Xcode at Scale
Pedro Piñera, the creator and one of the core maintainers of Tuist, gave an amazing talk at the Seoul iOS Meetup about the challenges of using Xcode at scale.
During the talk, Pedro goes through numerous examples of challenges you will encounter while using Xcode at scale such as implicit dependency resolution and slow compilation of Swift macros and shows you how to overcome them.
👀 Is SPM the right tool to manage your modular project?
Earlier this year, Jonathan Crooke at Bumble did a series of articles on the work that they did to tackle the challenges of scaling their iOS apps, where they primarily focused on managing a big modular codebase and overcoming Xcode’s pitfalls and bottlenecks.
While the series has three awesome articles, this second one is particularly interesting to me as it explains why Bumble did NOT choose SPM to manage its modular codebase.