๐ Building for iOS โ
This page walks you through building the iOS app, uploading it to App Store Connect, and getting it published on the Apple App Store.
1๏ธโฃ Step 1: Create Your App on App Store Connect โ
- Log in to App Store Connect
- Click "My Apps" โ the "+" button โ "New App"
- Fill in the details:
- ๐ฑ Platforms: iOS
- ๐ท๏ธ Name: Your restaurant name (e.g., "Mario's Pizza") โ this must be unique on the App Store
- ๐ Primary language: Your default language
- ๐ Bundle ID: Select the bundle ID matching
ios.bundleIdentifierin yourapp.json(e.g.,com.mariospizza.app) - ๐ท๏ธ SKU: A unique identifier you choose (e.g.,
mariospizza-ios-1) - ๐ฅ User Access: Full Access
- Click "Create"
๐ก Bundle ID Not Listed?
If your bundle ID doesn't appear in the dropdown, you need to register it first:
- Go to developer.apple.com/account/resources/identifiers
- Click the "+" button
- Select "App IDs" โ "App"
- Enter a description and paste your Bundle ID
- Enable capabilities: Push Notifications, Associated Domains
- Click "Register"
2๏ธโฃ Step 2: Build the Production Binary โ
From the packages/mobile directory:
eas build --profile production --platform iosEAS will:
- ๐ Ask you to log in with your Apple ID (if not already cached)
- ๐ Automatically create or use existing certificates and provisioning profiles
- ๐๏ธ Build the app on Expo's Mac build servers
- โ
Produce a signed
.ipafile
The build takes 15-30 minutes. When complete, EAS provides a download URL.
๐ First-Time Build Prompts โ
On your first iOS build, EAS may ask:
- ๐ "Do you want EAS to manage your Apple credentials?" โ Select Yes (recommended)
- ๐ฅ "Select a team" โ Choose your Apple Developer team
- ๐ "Generate a new Apple Distribution Certificate?" โ Select Yes
- ๐ "Generate a new Apple Provisioning Profile?" โ Select Yes
3๏ธโฃ Step 3: Upload to App Store Connect โ
๐ Option A: Automatic Upload with EAS Submit (Recommended) โ
eas submit --platform ios --latestEAS will upload the latest build directly to App Store Connect. You'll need:
- ๐ Your Apple ID
- ๐ An app-specific password (if you have 2FA enabled):
- Go to appleid.apple.com
- Sign in โ Security โ App-Specific Passwords
- Click "Generate Password"
- Use this password when EAS prompts for it
๐ค Option B: Manual Upload with Transporter โ
- Download the
.ipafile from the EAS build URL - Install Transporter from the Mac App Store
- Open Transporter, sign in with your Apple ID
- Drag and drop the
.ipafile - Click "Deliver"
๐ฅ๏ธ Option C: Manual Upload with Xcode โ
- Download the
.ipafile - Open Xcode โ Window โ Organizer
- Click "Distribute App" and follow the prompts
4๏ธโฃ Step 4: Configure App Store Listing โ
In App Store Connect, go to your app and fill in the following:
๐ App Information โ
| Field | What to Enter |
|---|---|
| ๐ท๏ธ Name | Your restaurant name |
| ๐ Subtitle | Short tagline (30 chars max). E.g., "Order Food & Reserve Tables" |
| ๐ฝ๏ธ Category | Food & Drink |
| ๐ท๏ธ Secondary Category | Lifestyle (optional) |
| ๐ Content Rights | "This app does not contain third-party content" |
| ๐ Age Rating | Click "Edit" and answer the questionnaire (most answers will be "No") |
๐ฑ Version Information โ
| Field | What to Enter |
|---|---|
| ๐ธ Screenshots | Required for different device sizes (see below) |
| ๐ Description | Full app description (see Store Listings) |
| ๐ Keywords | Comma-separated search terms (100 chars max). E.g., "food, delivery, pizza, restaurant, order, pickup, reservation" |
| ๐ Support URL | Your restaurant's website or contact page |
| ๐ Marketing URL | (Optional) Your restaurant's website |
| ๐ Privacy Policy URL | Required โ URL to your privacy policy page |
๐ธ Screenshots โ
Apple requires screenshots for each device size you support:
| Device | Size | Required |
|---|---|---|
| ๐ฑ iPhone 6.9" (15 Pro Max) | 1320 x 2868 px | Yes (at least one size required) |
| ๐ฑ iPhone 6.7" (14 Pro Max) | 1290 x 2796 px | Yes |
| ๐ฑ iPhone 6.5" (11 Pro Max) | 1284 x 2778 px | Alternative to 6.7" |
| ๐ฑ iPhone 5.5" (8 Plus) | 1242 x 2208 px | Only if supporting older devices |
| ๐ป iPad Pro 12.9" | 2048 x 2732 px | Only if supportsTablet is true |
You need minimum 2, maximum 10 screenshots per device size.
๐ธ Taking iOS Screenshots
- Run the app in the iOS Simulator:
npx expo start --ios - In the Simulator menu: File โ Screenshot (or Cmd+S)
- Use different simulator devices for different sizes:
- iPhone 15 Pro Max for 6.7" screenshots
- iPhone SE for 5.5" screenshots
โจ Professional Screenshots
For polished app store screenshots with device frames and text overlays, use:
- ๐ผ๏ธ Screenshots.pro โ drag-and-drop screenshot designer
- ๐ฑ Previewed โ mockup generator
- ๐จ Canva โ search for "App Store Screenshot" templates
๐ค App Review Information โ
| Field | What to Enter |
|---|---|
| ๐ค Contact First Name | Your name |
| ๐ค Contact Last Name | Your surname |
| ๐ Contact Phone | Your phone number |
| ๐ง Contact Email | Your email |
| ๐ Demo Account | Provide test credentials: customer@example.com / customer123 |
| ๐ Notes | "This is a food ordering app for [your restaurant name]. Use the demo account to browse the menu and place a test order." |
โ ๏ธ Demo Account Required
Apple's review team will test your app. They need working login credentials and a functioning backend. Make sure your server is running and accessible before submitting.
5๏ธโฃ Step 5: Submit for Review โ
- In App Store Connect, go to your app's version page
- Select the uploaded build in the "Build" section (it may take a few minutes to appear after upload and processing)
- Click "Add for Review"
- Review the submission details
- Click "Submit to App Review"
๐ Review Process โ
Apple's review typically takes 24-48 hours for new apps, though it can occasionally take up to a week.
Common reasons for rejection:
- ๐ Incomplete information: Missing privacy policy, screenshots, or description
- ๐ฅ Bugs: App crashes or key features don't work
- ๐ Login issues: Review team can't log in with the provided demo account
- ๐ฅ๏ธ Missing backend: Server is down or unreachable during review
- ๐ Placeholder content: Using "Lorem ipsum" or stock images
- โ ๏ธ Guideline 4.2: If the app is too simple (a "web wrapper"), Apple may reject it. KitchenAsty is a full native app, so this shouldn't be an issue.
If rejected, Apple provides specific feedback. Fix the issues, upload a new build, and resubmit.
6๏ธโฃ Step 6: Release โ
After approval, you have three release options:
- ๐ฑ๏ธ Manual release: You click "Release" when ready
- โก Automatic release: Released immediately after approval
- ๐ Scheduled release: Released on a specific date
Choose your preferred option in the "Version Release" section before submitting.
7๏ธโฃ Step 7: After Publishing โ
๐ Monitor in App Store Connect โ
- ๐ App Analytics: Downloads, sessions, retention
- โญ Ratings and Reviews: Respond to customer feedback
- ๐ฅ Crashes: Xcode Organizer shows crash logs
๐งช TestFlight (For Beta Testing) โ
Before submitting production releases, you can beta test with TestFlight:
- Upload a build to App Store Connect
- Go to the TestFlight tab
- Add internal testers (your Apple Developer team members) โ no review needed
- Add external testers โ requires a brief beta review
- Testers install via the TestFlight app
๐ Publishing Updates โ
When you release a new version:
# Build new version
eas build --profile production --platform ios
# Submit to App Store Connect
eas submit --platform ios --latestIn App Store Connect:
- Create a new version (e.g., 1.1.0)
- Select the new build
- Add "What's New" text describing the changes
- Submit for review
Updates are usually reviewed faster than initial submissions (often within 24 hours).
โก๏ธ Next Step โ
Continue to Store Listings for description templates and marketing guidance.