Skip to content

๐ŸŽ 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 โ€‹

  1. Log in to App Store Connect
  2. Click "My Apps" โ†’ the "+" button โ†’ "New App"
  3. 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.bundleIdentifier in your app.json (e.g., com.mariospizza.app)
    • ๐Ÿท๏ธ SKU: A unique identifier you choose (e.g., mariospizza-ios-1)
    • ๐Ÿ‘ฅ User Access: Full Access
  4. Click "Create"

๐Ÿ’ก Bundle ID Not Listed?

If your bundle ID doesn't appear in the dropdown, you need to register it first:

  1. Go to developer.apple.com/account/resources/identifiers
  2. Click the "+" button
  3. Select "App IDs" โ†’ "App"
  4. Enter a description and paste your Bundle ID
  5. Enable capabilities: Push Notifications, Associated Domains
  6. Click "Register"

2๏ธโƒฃ Step 2: Build the Production Binary โ€‹

From the packages/mobile directory:

bash
eas build --profile production --platform ios

EAS will:

  1. ๐Ÿ”‘ Ask you to log in with your Apple ID (if not already cached)
  2. ๐Ÿ” Automatically create or use existing certificates and provisioning profiles
  3. ๐Ÿ—๏ธ Build the app on Expo's Mac build servers
  4. โœ… Produce a signed .ipa file

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 โ€‹

bash
eas submit --platform ios --latest

EAS 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):
    1. Go to appleid.apple.com
    2. Sign in โ†’ Security โ†’ App-Specific Passwords
    3. Click "Generate Password"
    4. Use this password when EAS prompts for it

๐Ÿ“ค Option B: Manual Upload with Transporter โ€‹

  1. Download the .ipa file from the EAS build URL
  2. Install Transporter from the Mac App Store
  3. Open Transporter, sign in with your Apple ID
  4. Drag and drop the .ipa file
  5. Click "Deliver"

๐Ÿ–ฅ๏ธ Option C: Manual Upload with Xcode โ€‹

  1. Download the .ipa file
  2. Open Xcode โ†’ Window โ†’ Organizer
  3. 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 โ€‹

FieldWhat to Enter
๐Ÿท๏ธ NameYour restaurant name
๐Ÿ“ SubtitleShort tagline (30 chars max). E.g., "Order Food & Reserve Tables"
๐Ÿฝ๏ธ CategoryFood & Drink
๐Ÿท๏ธ Secondary CategoryLifestyle (optional)
๐Ÿ“„ Content Rights"This app does not contain third-party content"
๐Ÿ”ž Age RatingClick "Edit" and answer the questionnaire (most answers will be "No")

๐Ÿ“ฑ Version Information โ€‹

FieldWhat to Enter
๐Ÿ“ธ ScreenshotsRequired for different device sizes (see below)
๐Ÿ“„ DescriptionFull app description (see Store Listings)
๐Ÿ” KeywordsComma-separated search terms (100 chars max). E.g., "food, delivery, pizza, restaurant, order, pickup, reservation"
๐Ÿ”— Support URLYour restaurant's website or contact page
๐ŸŒ Marketing URL(Optional) Your restaurant's website
๐Ÿ”’ Privacy Policy URLRequired โ€” URL to your privacy policy page

๐Ÿ“ธ Screenshots โ€‹

Apple requires screenshots for each device size you support:

DeviceSizeRequired
๐Ÿ“ฑ iPhone 6.9" (15 Pro Max)1320 x 2868 pxYes (at least one size required)
๐Ÿ“ฑ iPhone 6.7" (14 Pro Max)1290 x 2796 pxYes
๐Ÿ“ฑ iPhone 6.5" (11 Pro Max)1284 x 2778 pxAlternative to 6.7"
๐Ÿ“ฑ iPhone 5.5" (8 Plus)1242 x 2208 pxOnly if supporting older devices
๐Ÿ’ป iPad Pro 12.9"2048 x 2732 pxOnly if supportsTablet is true

You need minimum 2, maximum 10 screenshots per device size.

๐Ÿ“ธ Taking iOS Screenshots

  1. Run the app in the iOS Simulator: npx expo start --ios
  2. In the Simulator menu: File โ†’ Screenshot (or Cmd+S)
  3. 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 โ€‹

FieldWhat to Enter
๐Ÿ‘ค Contact First NameYour name
๐Ÿ‘ค Contact Last NameYour surname
๐Ÿ“ž Contact PhoneYour phone number
๐Ÿ“ง Contact EmailYour email
๐Ÿ”‘ Demo AccountProvide 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 โ€‹

  1. In App Store Connect, go to your app's version page
  2. Select the uploaded build in the "Build" section (it may take a few minutes to appear after upload and processing)
  3. Click "Add for Review"
  4. Review the submission details
  5. 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:

  1. ๐Ÿ–ฑ๏ธ Manual release: You click "Release" when ready
  2. โšก Automatic release: Released immediately after approval
  3. ๐Ÿ“… 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:

  1. Upload a build to App Store Connect
  2. Go to the TestFlight tab
  3. Add internal testers (your Apple Developer team members) โ€” no review needed
  4. Add external testers โ€” requires a brief beta review
  5. Testers install via the TestFlight app

๐Ÿ”„ Publishing Updates โ€‹

When you release a new version:

bash
# Build new version
eas build --profile production --platform ios

# Submit to App Store Connect
eas submit --platform ios --latest

In App Store Connect:

  1. Create a new version (e.g., 1.1.0)
  2. Select the new build
  3. Add "What's New" text describing the changes
  4. 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.