{"id":38942,"date":"2023-04-03T14:01:19","date_gmt":"2023-04-03T18:01:19","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=38942"},"modified":"2025-10-11T12:18:07","modified_gmt":"2025-10-11T16:18:07","slug":"xcode-14-3","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2023\/04\/03\/xcode-14-3\/","title":{"rendered":"Xcode 14.3"},"content":{"rendered":"<p><a href=\"https:\/\/developer.apple.com\/documentation\/xcode-release-notes\/xcode-14_3-release-notes\">Apple<\/a>:<\/p>\n<blockquote cite=\"https:\/\/developer.apple.com\/documentation\/xcode-release-notes\/xcode-14_3-release-notes\"><p>Clang and the build system support a new mode for building module dependencies called explicit modules which improves build performance, reliability, and correctness. The new mode is opt-in, and can be enabled by setting <code>_EXPERIMENTAL_CLANG_EXPLICIT_MODULES<\/code> as a user-defined build setting in C and Objective-C projects which build with modules enabled.<\/p><p>[&#8230;]<\/p><p>Xcode now prompts a user prior to performing a clean action. This prompt can be bypassed by holding the option key while performing a clean, or by permanently hiding the prompt by enabling the &ldquo;Don&rsquo;t Ask Me&rdquo; setting within the prompt.<\/p><p>[&#8230;]<\/p><p>Run scripts in a scheme&rsquo;s pre-actions and post-actions for the Build section now cause the build to fail if any run script exits with a non-zero exit code, instead of reporting a false-positive successful build.<\/p><p>[&#8230;]<\/p><p>When a pre-build scheme action (such as compiling a package plugin) encounters an error, the status message at the top of Xcode&rsquo;s workspace window sometimes doesn&rsquo;t update. This leaves the previous status showing, possibly causing confusion if the previous status was &ldquo;Build Succeeded.&rdquo;<\/p><p>[&#8230;]<\/p><p>Xcode automatic signing now creates managed provisioning profiles for Developer ID. This resolves an issue that caused Xcode to throw an error when cloud signing with a Developer ID certificate during the app distribution workflow. <\/p><p>[&#8230;]<\/p><p>The <code>timeout<\/code> argument of <code>XCTestCase.wait(for:timeout:enforceOrder:)<\/code> and related methods is now optional&mdash;if you don&rsquo;t specify it, the function waits indefinitely (until the overall test times out.) To ensure reasonable execution time, set an appropriate value for the <code>executionTimeAllowance<\/code> property of the running <code>XCTestCase<\/code> instance (<code>self<\/code>).<\/p><\/blockquote>\n\n<p>The extra pieces can be downloaded <a href=\"https:\/\/developer.apple.com\/download\/all\/\">here<\/a>, though the Additional Tools are still only at RC status.<\/p>\n\n<p>The two main changes I noticed are that there&rsquo;s now an annoying animation when I use <strong>Open Quickly&#8230;<\/strong> and that tests now need a deployment target of macOS 12. This created a bunch of work silencing deprecation warnings, which is kind of silly because the code being tested runs on macOS 10.13 and so can&rsquo;t depend on the newer APIs, anyway.<\/p>\n\n<p>I had to turn off the new module verifier because it warned about double-quoted includes even though I had turned off that warning. (I use such includes to be able to use the same file both in a framework and when I want to include a few individual files in a standalone binary.)<\/p>\n\n<p><a href=\"https:\/\/hachyderm.io\/@heathborders\/110040385216218473\">Heath Borders<\/a>:<\/p>\n<blockquote cite=\"https:\/\/hachyderm.io\/@heathborders\/110040385216218473\"><p>TIL Xcode 14.3 Beta isn&rsquo;t supported under Rosetta. This means that if your iOS project uses x86 libraries, you won&rsquo;t be able to run the project on an x86 iOS Simulator on an arm64 mac anymore.<\/p><p>You&rsquo;ll either have to go back to an x86 mac to run your project or you&rsquo;ll have to add arm64 slices to your libraries.<\/p><\/blockquote>\n\n<p><a href=\"https:\/\/hachyderm.io\/@grynspan\/109883549969073243\">Jonathan Grynspan<\/a>:<\/p>\n<blockquote cite=\"https:\/\/hachyderm.io\/@grynspan\/109883549969073243\"><p>New in Xcode 14.3: if you&rsquo;re using <code>XCTestExpectation<\/code> or <code>XCTWaiter<\/code> from an async Swift function, you&rsquo;ll get warnings when using <code>wait(for:timeout:)<\/code> because that synchronous function may deadlock. Switch to <a href=\"https:\/\/developer.apple.com\/documentation\/xctest\/xctestcase\/4109476-fulfillment\">fulfillment(of:)<\/a> instead for maximum Swiftiness!<\/p><\/blockquote>\n\n<p><a href=\"https:\/\/mastodon.social\/@christianselig\/110102689727282503\">Christian Selig<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@christianselig\/110102689727282503\">\n<p>If Xcode 15 released and the only feature was it was cured of hallucinating ghost errors I would stand up out of my chair and clap.<\/p>\n<\/blockquote>\n<p>With the last several releases of Xcode, I&rsquo;ve seen a lot of fake errors, as well as problems with builds not working properly unless I manually clean the folder first. The Swift compiler still crashes every day.<\/p>\n\n<p><a href=\"https:\/\/mastodon.social\/@nicklockwood\/110131821174448819\">Nick Lockwood<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@nicklockwood\/110131821174448819\"><p>PSA: If you&rsquo;re an Apple dev who hasn&rsquo;t updated to Ventura for whatever reason, the usual trick of editing the Minimum system version in the Xcode 14.3 Info.plist seems to get it running just fine on Monterey.<\/p><\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2023\/04\/03\/swift-5-8\/\">Swift 5.8<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2022\/12\/14\/xcode-14-2\/\">Xcode 14.2<\/a><\/li>\n<\/ul>\n\n<p id=\"xcode-14-3-update-2023-04-07\">Update (2023-04-07): My experience so far is that Xcode 14.3 massively increases the number of fake compiler errors, and I&rsquo;m also getting all sorts of weird crashes when running tests that go away if I clean the build folder. My guess is that there&rsquo;s something wrong with the dependency tracking so that some files are not being recompiled, and the mismatch between old and new code interacting is causing crashes as well as unexpected test failures.<\/p>\n\n<p><a href=\"https:\/\/mastodon.social\/@globex\/110158977830918415\">Kurt<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@globex\/110158977830918415\">\n<p>I have to build multiple times to see failures in Xcode 14.3. First build: failed, but no errors are shown. Second build: failed, errors are show for a few seconds then go away. Rinse and repeat until you can find the errors.<\/p>\n<\/blockquote>\n\n<p id=\"xcode-14-3-update-2023-04-21\">Update (2023-04-21): <a href=\"https:\/\/mastodon.social\/@chbeer\/110169728983452290\">Christian Beer<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@chbeer\/110169728983452290\">\n<p>Xcode, I love you too&#8230;<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/mastodon.social\/@brentsimmons@indieweb.social\/110161291525821872\">Brent Simmons<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@brentsimmons@indieweb.social\/110161291525821872\">\n<p>I can&rsquo;t upload NetNewsWire to Apple&rsquo;s notarization service using Xcode 14.3 &mdash;&nbsp;Xcode complains about the profile not complaining a Game Center entitlement.<\/p>\n<p>Sure. For obvious reasons.<\/p>\n<p>But! I had kept a copy of Xcode 14.2, as you do, and it worked perfectly.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/mastodon.social\/@pilky\/110218993806137486\">Martin Pilkington<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@pilky\/110218993806137486\">\n<p>Sooo&#8230; I just discovered the latest version of Xcode may have fixed a compiler issue that was kneecapping my M1 Ultra.<\/p>\n<p>There was an issue where on certain projects my Mac Studio would be as fast as my Intel iMac and SLOWER than an M1 MBP. The reason? Too many cores. If I limited to 4 cores it was faster than 20 (as in 90s vs 150-200s).<\/p>\n<p>Just did a clean build today and&#8230; 20-30s. My Studio FINALLY feels as fast as it should! &#x1F62D;<\/p><\/blockquote>\n\n<p><a href=\"https:\/\/mastodon.social\/@ccgus\/110222129078139656\">Gus Mueller<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@ccgus\/110222129078139656\">\n<p>A change in compilers (whatever clang was in Xcode 14.0 vs. 14.3) + a more aggressive ARC memory release surfaced a stupid little bug in Acorn that nobody would have seen but me. It was caught in regression tests, and I was super confused for a long time, but &#8230; yay compilers getting smarter \/ faster \/ whatever?<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/twitter.com\/mpweiher\/status\/1646223998852669440\">Marcel Weiher<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/mpweiher\/status\/1646223998852669440\">\n<p>Anyone else have Xcode 14.3 beach balling constantly?<\/p>\n<p>Seems to be hanging on some XPC thing to do with text input?<\/p>\n<\/blockquote>\n<p>This has happened to me several times. I&rsquo;m also seeing hangs when I&rsquo;m away from the office and it tries to check the source control status of a file but can&rsquo;t reach the server on my LAN.<\/p>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2023\/04\/12\/xcode-files-with-source-control-status\/\">Xcode Files With Source-Control Status<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2017\/03\/16\/swift-compiler-not-optimized-for-lots-of-cores\/\">Swift Compiler Not Optimized for Lots of Cores<\/a><\/li>\n<\/ul>\n\n<p id=\"xcode-14-3-update-2023-05-01\">Update (2023-05-01): <a href=\"https:\/\/tapbots.social\/@paul\/110278328459155355\">Paul Haddad<\/a>:<\/p>\n<blockquote cite=\"https:\/\/tapbots.social\/@paul\/110278328459155355\"><p>Anyone run into problems with Xcode 14.3 not auto-creating a proper CFBundleIcons~ipad entry? 14.2 doesn&rsquo;t create it for simulator builds, but does create it for Archive. 13.4.1 creates it all the time.<\/p><p>Driving me nuts.<\/p><\/blockquote>\n<p><a href=\"https:\/\/mastodon.online\/@aaronzichon\/110278664552928460\">Aaron Czichon<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.online\/@aaronzichon\/110278664552928460\"><p>Xcode 14.3 has many problems. Also doesn&rsquo;t work correctly in any CI\/CD environment. Throwing random errors which are not related to the actual error. Need to downgrade to Xcode 13.x everything to get the real error. Driving me nuts.<\/p><\/blockquote>\n<p>I&rsquo;ve been much happier since downgrading to 14.2, though it still shows lots of spurious errors.<\/p>","protected":false},"excerpt":{"rendered":"<p>Apple: Clang and the build system support a new mode for building module dependencies called explicit modules which improves build performance, reliability, and correctness. The new mode is opt-in, and can be enabled by setting _EXPERIMENTAL_CLANG_EXPLICIT_MODULES as a user-defined build setting in C and Objective-C projects which build with modules enabled.[&#8230;]Xcode now prompts a user [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2023-04-03T18:01:22Z","apple_news_api_id":"d5a89529-0f6d-49ef-9a4e-b9407dab750e","apple_news_api_modified_at":"2025-10-11T16:18:09Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAABQ==","apple_news_api_share_url":"https:\/\/apple.news\/A1aiVKQ9tSe-aTrlAfat1Dg","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[131,230,466,30,2223,71,2848,1025,2200,901,268,226],"class_list":["post-38942","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-bug","tag-clang","tag-codesigning","tag-mac","tag-macos-13-ventura","tag-programming","tag-provisioning-profiles","tag-rosetta","tag-swift-concurrency","tag-swift-programming-language","tag-testing","tag-xcode"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/38942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=38942"}],"version-history":[{"count":7,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/38942\/revisions"}],"predecessor-version":[{"id":39229,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/38942\/revisions\/39229"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=38942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=38942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=38942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}