Overview
Exporting to iOS requires a Mac with Xcode installed and an Apple Developer account. The process involves code signing, provisioning profiles, and App Store submission.Prerequisites
Required software
1
macOS computer
iOS export requires macOS. Virtual machines are not officially supported by Apple.
2
Install Xcode
Download Xcode from the Mac App Store (free)
3
Install command line tools
4
Apple Developer account
Sign up at https://developer.apple.com ($99/year for App Store publishing)
You can test on your own devices with a free Apple Developer account, but App Store publishing requires a paid account.
Creating iOS export preset
- Go to Project > Export
- Click Add… and select iOS
- Configure preset settings
Basic configuration
Code signing
iOS apps must be signed with certificates and provisioning profiles.Creating certificates
1
Generate certificate request
- Open Keychain Access on Mac
- Keychain Access > Certificate Assistant > Request a Certificate from a Certificate Authority
- Enter email and name, save to disk
2
Create certificate in Apple Developer portal
- Go to https://developer.apple.com/account
- Certificates, IDs & Profiles > Certificates
- Create iOS Development and iOS Distribution certificates
- Upload certificate request
- Download and install certificates
Provisioning profiles
- Development
- App Store
For testing on your devices:
- Register device UDIDs in Apple Developer portal
- Create App ID matching your bundle identifier
- Create Development provisioning profile
- Download and install profile
Automatic signing
Export process
Export Xcode project
Godot exports an Xcode project that you build with Xcode:Build in Xcode
1
Open project
Open the exported
.xcodeproj file in Xcode2
Select target
Choose your device or simulator from the target dropdown
3
Configure signing
Go to project settings > Signing & Capabilities
Select your team and provisioning profile
4
Build and run
Click the Play button or Product > Run (Cmd+R)
App icons
iOS requires multiple icon sizes:All icons should be square PNG files without transparency or rounded corners. iOS applies the shape automatically.
Launch screens
Configure launch screen (splash screen):Capabilities and permissions
Required capabilities
Privacy descriptions
iOS requires descriptions for permission requests:iOS plugins
Extend functionality with iOS plugins:Native plugin example
Screen orientation
TestFlight
Test your app with beta testers:1
Archive app
In Xcode: Product > Archive
2
Upload to App Store Connect
Window > Organizer > Distribute App > App Store Connect
3
Configure TestFlight
In App Store Connect, add beta testers and submit for review
4
Distribute to testers
Once approved, testers receive TestFlight invite
Publishing to App Store
Preparing for submission
1
Create app in App Store Connect
- Go to https://appstoreconnect.apple.com
- My Apps > + > New App
- Fill in app information
2
Prepare metadata
- App name and subtitle
- Description and keywords
- Screenshots (required sizes for each device)
- App icon (1024x1024)
- Privacy policy URL
3
Build release version
Create archive in Xcode with App Store provisioning profile
4
Upload to App Store Connect
Use Xcode Organizer or Transporter app to upload
App Review guidelines
Complete app
App must be fully functional, not a demo or beta.
Accurate metadata
Screenshots and descriptions must match actual app.
No crashes
Thoroughly test to ensure stability.
Privacy compliance
Include privacy policy and comply with data regulations.
In-App Purchases
Implement IAP for monetization:Game Center
Integrate Game Center for leaderboards and achievements:Performance optimization
Use Metal
Metal is the default graphics API on iOS for best performance.
Optimize for battery
Limit frame rate and reduce background processing.
Test on real devices
Simulator doesn’t reflect actual device performance.
Use mobile renderer
Select Mobile renderer for better performance on iOS devices.
Device-specific code
Troubleshooting
Code signing issues
No valid provisioning profiles
No valid provisioning profiles
Ensure provisioning profile matches bundle ID and is not expired.
Certificate not trusted
Certificate not trusted
Install certificates in Keychain Access and ensure they’re valid.
Team ID mismatch
Team ID mismatch
Verify Team ID matches your Apple Developer account.
Build errors
App Store rejection common causes
Next steps
Android
Export for Android devices
Web
Export for web browsers
Desktop
Export for desktop platforms