An IPA (iPhone Application Archive) is a renamed ZIP file containing a signed .app bundle in a `Payload/` folder. It is the format Apple expects for every distribution method on iOS, iPadOS, tvOS, watchOS, and visionOS: TestFlight, App Store, Ad Hoc, and Enterprise. macOS apps use .pkg or notarized .zip instead.
What's inside
MyApp.ipa
└─ Payload/
└─ MyApp.app/
├─ MyApp # Mach-O executable
├─ Info.plist
├─ embedded.mobileprovision # The provisioning profile
├─ _CodeSignature/
│ └─ CodeResources # Signature manifest
├─ Assets.car
├─ Frameworks/
└─ PlugIns/Inspect one without unzipping by hand
# Read the provisioning profile that shipped inside unzip -p MyApp.ipa 'Payload/*.app/embedded.mobileprovision' \ | security cms -D -i /dev/stdin # Show the signature identity, hardened runtime status, and entitlements unzip -q MyApp.ipa -d /tmp/check codesign -dvv --entitlements :- /tmp/check/Payload/*.app
How it ships
- TestFlight and App Store: uploaded with `xcrun altool --upload-app` or Transporter against the App Store Connect API.
- Ad Hoc: hosted as a download alongside an itms-services manifest plist that iOS uses to install over-the-air.
- Internal device install: dragged into Xcode's Devices and Simulators window, or installed via `ios-deploy`.