The past 2 1/2 months have not been great due to a myriad of Apple bugs.

It all started during the development cycle of iOS 13.3. When the first beta came out, it became apparent that a new version of Intelligent Tracking Prevention (ITP) was included as a few workflows stopped working. This lead me to log FB7430333 to determine if the breakage was intentional or not. Turns out, that while yes the ITP changes were intentional, it uncovered a separate bug where if a user disabled ITP, no cookies used in a 3rd party context would function. The WebKit team fixed this for the final release of iOS 13.3, but, the Xcode team didn’t get the memo: the version of iOS in the simulator image in both Xcode 11.3 and Xcode 11.3.1 is an older build that does not contain the fix… bummer.

The next bug I ran into manifested with the release of macOS 10.15.2. At first I thought it was due to the final release of Xcode 11.3, but the issue persisted with Xcode 11.2.1. In 10.15.2, Apple had inadvertently broken the Thread Sanitizer (TSan). What would happen was that during simulator boot, the dynamic loader would attempt to inject the TSan dylib and it would fail due to an assertion verifying that the simulator was on a supported host. I think this was due to TSan incorrectly mucking with some internal system calls. Regardless, I logged FB7489601 and Apple acknowledged the issue pretty quickly. This was fixed with Xcode 11.3.1, but I don’t believe that it was truly fixed. Yes, the simulator doesn’t crash anymore, but TSan still isn’t functioning correctly (IMHO) and the true fix is included in macOS 10.15.3 (which isn’t GA at the time of writing).

Side Note: Xcode 11.3.1 is perplexing. According to the developer site’s manual download section, both the updated command line tools and Xcode itself were “available” on December 20th, but, Apple did not officially release them until January 13th (and no one saw them until that date). This leads me to believe that they had the fixes ready, but had to wait until after the holidays for QA to come back to the office. To me, this highlights the fact that you should never release right before the holidays and just wait until after so that you can address unforeseen issues quickly.

Finally, iOS 13.3 broke UI testing content in web views. Unfortunately, SFSafariViewController and ASWebAuthenticationSession are considered web views by the accessibility service (which is how UI tests interact with the system) and thus, automated tests cannot perform login. The issue appears to stem from the accessibility service being denied the ability to inspect the web views of an application and/or system process, so the query just times out and fails the UI test. An example of this is: “[AXRuntimeCommon] AX Lookup problem - errorCode:1100 error:Permission denied portName:‘com.apple.iphone.axserver’”. I logged this as FB7513956 and this issue has a potential fix incoming in a future OS release (probably the next iOS 13.3.1 beta) so hopefully I don’t have to wait too much longer for this to get resolved.


All of the issues I mentioned above make me wish that Apple was as agile as other tech companies when it comes to patching issues in both developer tools and operating systems. It also highlights that it takes developers running into the same issue and posting about it on the Apple developer forums to coordinate logging matching issues to get Apple to pay attention to issues rather than having public bug trackers. An example of a company doing it right is Amazon: when they released Corretto 11.0.6.10.1, I encountered an issue that made the release unusable. Amazon acknowledged the issue right away and fixed it that evening. If this were Apple, I would have needed to wait weeks. I truly hope that the iOS 14 (and related OSes and tools) development process has been improved so that developers don’t run into issues like this frequently anymore.