Search code examples
iosxcodexcode15

xcodebuild fails with #Preview macro with Xcode 15.0


I noticed that in Xcode 15.0, xcodebuild command to archive the app fails unless I remove the #Preview macro from the app.

$ xcodebuild archive -scheme <Your Scheme> -sdk iphoneos -allowProvisioningUpdates -archivePath build.xcarchive

and the error is:

{
  "kind": "finished",
  "name": "compile",
  "pid": 42409,
  "output": "<unknown>:0: warning: compiler plugin not loaded: '\/Applications\/Xcode-15.0.0-Release.Candidate.app\/Contents\/Developer\/Platforms\/iPhoneOS.platform\/Developer\/usr\/bin\/swift-plugin-server; fai
led to initialize\n\/Users\/xyz\/Dev\/experiments\/fastlane-test\/fastlane-test\/ContentView.swift:22:1: error: external macro implementation type 'PreviewsMacros.SwiftUIView' could not be found for macro
'Preview(_:body:)'\n#Preview {\n^\nSwiftUI.Preview:2:41: note: 'Preview(_:body:)' declared here\n@freestanding(declaration) public macro Preview(_ name: String? = nil, body: @escaping @MainActor () -> View) = #ex
ternalMacro(module: \"PreviewsMacros\", type: \"SwiftUIView\")\n                                        ^\n",
  "process": {
    "real_pid": 42409
  },
  "exit-status": 1
}
** ARCHIVE FAILED **

How to reproduce:

  1. Create a brand new app project with Xcode 15.0 RC
  2. Run the above command

If I comment out the default #Preview statement in the ContentView.swift, the same command passes flawlessly. What am I missing?


Solution

  • For the record. This problem stopped reproducing with Xcode 15.3 and no longer occurs with later versions of Xcode, so it was most likely a bug in older Xcode.