How to make a simulator build to share

To share a simulator build, build your scheme with xcodebuild for generic/platform=iOS Simulator, take the .app from Build/Products/<Configuration>-iphonesimulator, and zip it with ditto -c -k --keepParent. Anyone with Xcode can install that .app in a simulator. It won't run on a real device.

Updated October 29, 2026.

No Mac for the order, but a Mac or macOS CI for the build

You don't need a Mac to order or download screenshots from Duo Screenshots. You do need one, or macOS CI with Xcode, to make the simulator build below. We don't accept source code, TestFlight links, device builds or .ipa files in place of that build. The service handles simulator setup and capture after you upload the zip; it doesn't replace your build pipeline.

Commands

Xcode project:

xcodebuild -project YourApp.xcodeproj -scheme YourApp \
  -configuration Release \
  -destination 'generic/platform=iOS Simulator' \
  -derivedDataPath build \
  build

Workspace (CocoaPods, or several projects):

xcodebuild -workspace YourApp.xcworkspace -scheme YourApp \
  -configuration Release \
  -destination 'generic/platform=iOS Simulator' \
  -derivedDataPath build \
  build

Zip the app:

cd build/Build/Products/Release-iphonesimulator
ditto -c -k --sequesterRsrc --keepParent YourApp.app YourApp.zip

Check it before you send it:

xcrun simctl install booted YourApp.app
xcrun simctl launch booted com.example.yourapp

What each option does

OptionWhy
-destination 'generic/platform=iOS Simulator'Builds for the simulator on any Mac, not for one named simulator
-configuration ReleaseSame code paths and assets as your App Store build. Debug works too
-derivedDataPath buildPuts the output in a known folder instead of ~/Library/Developer/Xcode/DerivedData
ditto -c -k --keepParentA zip that keeps the .app bundle intact, including symlinks inside frameworks. Plain zip -r without -y replaces those symlinks with copies

Sources: xcodebuild -help, man ditto, Xcode — Running your app in Simulator.

Requirements for iPhone Duo

RequirementWhy
Built with Xcode 27.1 or later (iOS 27.1 SDK)Xcode 27.1 adds iPhone Duo support (Apple Developer News)
Deployment target 27.1 or lowerThe iPhone Duo simulator runs iOS 27.1
Simulator slice includedA device-only build (iphoneos) won't install in a simulator
No login wall without a demo accountWhoever shoots the screenshots needs to get past it. Use the same demo account you give App Review

For a Full set, the same build must also run on our iPhone 6.3" and iPad 13" simulators, which use iOS 27.0. Keep the deployment target at 27.0 or lower and include a simulator-compatible architecture. The iPad capture is included only if your app supports iPad, not as an iPhone app in compatibility mode. An iPhone-only app gets three sizes at the same Full set price. The Duo simulator uses iOS 27.1; installing a newer SDK doesn't by itself make a device-only build simulator-compatible.

Common problems

SymptomCauseFix
Unable to install: wrong architectureYou zipped the Release-iphoneos buildUse the -iphonesimulator folder
Build fails on signingSimulator builds don't need a distribution profileAdd CODE_SIGNING_ALLOWED=NO to the build command if your project insists on a team
App crashes at launch only in the simulatorA framework without a simulator slice, or code that needs real hardwareBuild the framework as an XCFramework with a simulator slice. Guard hardware-only code
The zip is hugedSYMs or test bundles insideZip only the .app

Using it with Duo Screenshots

This is the build Duo Screenshots asks for. Upload the zip and choose a Full set for all required sizes: iPhone 6.3" (1206 × 2622), iPhone Duo outer (1398 × 2034) and inner (native 2007 × 2853 or 2853 × 2007), plus iPad 13" (2064 × 2752) if your build supports iPad. Up to 6 screens per size, one language: up to 24 PNGs, or 18 for an iPhone-only app, at $39 either way. Inner orientation isn't selectable or guaranteed and may vary between screenshots. We don't rotate or resize PNGs. A Duo set is only the two Duo displays, up to 12 PNGs per language, $19 until March 1, 2027, then $29. Each extra language is $9, up to 5 languages per order. Free iPhone Duo check: layout report only, no screenshots, one per account.

We capture your app, not frames or captions, and you upload the files to App Store Connect yourself. Both paid sets arrive within 24 hours on business days from payment (Monday–Friday, New York time); the clock pauses while we wait for information from you. We don't need your source code. We delete builds, demo logins and reference screenshots 7 days after the order is finished, and your screenshots after 90 days.