> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mobile-starter.amisi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Apple Developer Setup

> Configure Apple Developer account and App Store Connect for iOS distribution

## Prerequisites

* Apple ID
* Apple Developer Program membership (\$99/year)
* Completed [App Identity](/configuration/app-identity) configuration
* Bundle identifier finalized

## Enroll in Apple Developer Program

### Individual Account

1. Go to [Apple Developer Program](https://developer.apple.com/programs/)
2. Click **Enroll**
3. Sign in with your Apple ID
4. Complete enrollment form
5. Pay annual fee (\$99 USD)
6. Wait for approval (usually 24-48 hours)

### Organization Account

1. Go to [Apple Developer Program](https://developer.apple.com/programs/)
2. Click **Enroll**
3. Sign in with your Apple ID
4. Select **Company/Organization**
5. Provide:
   * Legal entity name
   * D-U-N-S Number
   * Legal authority documentation
6. Pay annual fee (\$99 USD)
7. Wait for verification (can take several days)

**Getting a D-U-N-S Number:**

* Free from [Dun & Bradstreet](https://www.dnb.com/duns-number.html)
* Required for organization accounts
* Processing takes 1-2 weeks

## Add Team Members

### Access App Store Connect

1. Go to [App Store Connect](https://appstoreconnect.apple.com/)
2. Sign in with your Apple ID (account holder)
3. Click **Users and Access**

### Invite Team Members

1. Click the **+** button

2. Enter team member details:
   * First name
   * Last name
   * Email address

3. Select role:
   * **Admin** - Full access to all apps and settings
   * **App Manager** - Manage apps, TestFlight, and App Analytics
   * **Developer** - Access to certificates, identifiers, and profiles
   * **Marketing** - Manage app metadata and pricing
   * **Sales** - Access to sales and financial reports
   * **Customer Support** - Access to customer reviews and ratings

4. Configure app access:
   * **All Apps** - Access to all current and future apps
   * **Specific Apps** - Select individual apps

5. Click **Invite**

### Team Member Accepts Invitation

1. Team member receives email invitation
2. Click **Accept Invitation**
3. Sign in with Apple ID
4. Accept terms and conditions
5. Access App Store Connect with assigned permissions

## Configure Team in Xcode

### For Team Members

1. Open Xcode
2. Go to **Xcode** → **Preferences** → **Accounts**
3. Click **+** to add Apple ID
4. Sign in with your Apple ID
5. Select your team from the dropdown

### For EAS Builds

EAS handles team configuration automatically when you provide credentials.

## Create App in App Store Connect

### 1. Register App

1. Go to [App Store Connect](https://appstoreconnect.apple.com/)

2. Click **My Apps**

3. Click the **+** button → **New App**

4. Fill in app information:
   * **Platforms**: iOS
   * **Name**: Your app name (can be different from bundle name)
   * **Primary Language**: English (or your primary language)
   * **Bundle ID**: Select your bundle identifier
   * **SKU**: Unique identifier (e.g., `com.yourcompany.yourapp`)
   * **User Access**: Full Access or Limited Access

5. Click **Create**

### 2. Configure App Information

**App Information:**

* Privacy Policy URL (required)
* Category (Primary and Secondary)
* Content Rights
* Age Rating

**Pricing and Availability:**

* Price tier (Free or paid)
* Availability (countries/regions)
* Pre-order settings

**App Privacy:**

* Data collection practices
* Privacy policy
* Data usage descriptions

### 3. Prepare for Submission

**Version Information:**

* Screenshots (required for all device sizes)
* App Preview videos (optional)
* Description
* Keywords
* Support URL
* Marketing URL (optional)

**Build:**

* Upload build via EAS or Xcode
* Select build for submission
* Add export compliance information

**General Information:**

* App icon (1024x1024)
* Copyright
* Contact information

## Register Bundle Identifier

### Using Apple Developer Portal

1. Go to [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/identifiers/list)

2. Click **+** to add identifier

3. Select **App IDs** → **Continue**

4. Select **App** → **Continue**

5. Configure:
   * **Description**: Your app name
   * **Bundle ID**: Explicit (use your bundle identifier from `app.json`)
   * **Capabilities**: Enable required capabilities
     * Push Notifications
     * Sign in with Apple
     * Associated Domains
     * etc.

6. Click **Continue** → **Register**

### Using EAS

EAS can automatically register bundle identifiers:

```bash theme={null}
eas credentials
```

Select your platform and follow prompts to configure identifiers.

## Configure Capabilities

### Required Capabilities

Based on your app's features, enable capabilities:

**Push Notifications:**

* Required for push notifications
* Enable in Identifiers → Capabilities

**Sign in with Apple:**

* Required if using Apple authentication
* Enable in Identifiers → Capabilities
* Configure in App Store Connect

**Associated Domains:**

* Required for universal links
* Enable in Identifiers → Capabilities
* Add domains in Xcode or app.json

**App Groups:**

* Required for sharing data between app and extensions
* Enable in Identifiers → Capabilities

### Configure in app.json

Add capabilities to your Expo config:

```json theme={null}
{
  "expo": {
    "ios": {
      "bundleIdentifier": "com.yourcompany.yourapp",
      "usesAppleSignIn": true,
      "associatedDomains": ["applinks:yourapp.com"],
      "infoPlist": {
        "NSUserTrackingUsageDescription": "We use tracking to provide personalized ads."
      }
    }
  }
}
```

## Certificates and Provisioning Profiles

### Using EAS (Recommended)

EAS manages certificates and profiles automatically:

```bash theme={null}
eas credentials
```

Select:

* **iOS** → **Distribution Certificate**
* **iOS** → **Provisioning Profile**

EAS will:

* Generate certificates
* Create provisioning profiles
* Store securely in EAS servers
* Use automatically in builds

### Manual Management

If you prefer manual management:

1. **Create Certificate Signing Request (CSR)**:
   * Open Keychain Access
   * Certificate Assistant → Request a Certificate
   * Save CSR file

2. **Create Distribution Certificate**:
   * Go to [Certificates](https://developer.apple.com/account/resources/certificates/list)
   * Click **+**
   * Select **Apple Distribution**
   * Upload CSR
   * Download certificate
   * Install in Keychain

3. **Create Provisioning Profile**:
   * Go to [Profiles](https://developer.apple.com/account/resources/profiles/list)
   * Click **+**
   * Select **App Store**
   * Select your App ID
   * Select your certificate
   * Name and generate profile
   * Download and install

## TestFlight Setup

### Enable TestFlight

1. In App Store Connect, go to your app
2. Click **TestFlight** tab
3. Upload a build via EAS:

```bash theme={null}
bun run build:production
```

4. Wait for build processing (10-30 minutes)
5. Add build to test group

### Create Test Groups

**Internal Testing:**

* Up to 100 internal testers
* Team members with App Store Connect access
* No review required
* Instant distribution

**External Testing:**

* Up to 10,000 external testers
* Requires beta app review
* Public link available

### Add Testers

**Internal Testers:**

1. TestFlight → Internal Testing
2. Click **+** next to testers
3. Select team members
4. Testers receive email invitation

**External Testers:**

1. TestFlight → External Testing
2. Create test group
3. Add testers by email or public link
4. Submit for beta review
5. Testers receive invitation after approval

### Test Information

Provide for external testing:

* What to test
* Test credentials (if required)
* Contact information
* Privacy policy URL

## App Review Guidelines

Before submission, ensure compliance:

### Required Information

* **Demo Account**: Provide test credentials if login required
* **Notes**: Special instructions for reviewers
* **Contact Information**: Phone and email for urgent issues

### Common Rejection Reasons

* **Incomplete Information**: Missing screenshots, descriptions
* **Crashes**: App crashes during review
* **Broken Links**: Non-functional URLs
* **Privacy**: Missing privacy policy or data usage descriptions
* **Sign in with Apple**: Required if other social logins present
* **Guideline Violations**: Content, functionality, or design issues

### Best Practices

1. **Test thoroughly** before submission
2. **Provide clear demo account** with full access
3. **Include detailed notes** for complex features
4. **Respond quickly** to reviewer questions
5. **Follow Human Interface Guidelines**

## Submission Checklist

Before submitting to App Store:

* [ ] Apple Developer account active
* [ ] Team members added with appropriate roles
* [ ] Bundle identifier registered
* [ ] App created in App Store Connect
* [ ] All required capabilities enabled
* [ ] Certificates and profiles configured
* [ ] Build uploaded and processed
* [ ] Screenshots for all device sizes
* [ ] App description and metadata complete
* [ ] Privacy policy URL provided
* [ ] App privacy information filled
* [ ] TestFlight testing completed
* [ ] Demo account credentials provided
* [ ] Review notes added

## Common Issues

### Team Not Showing in Xcode

**Solution**: Ensure you're added to the team in App Store Connect and have accepted the invitation.

### Bundle Identifier Already Registered

**Solution**: Bundle IDs are unique across all Apple Developer accounts. Choose a different identifier.

### Certificate Limit Reached

**Solution**: Apple limits distribution certificates. Revoke unused certificates or use EAS to manage automatically.

### Build Not Appearing in TestFlight

**Solution**: Wait for processing (10-30 minutes). Check for email about processing issues.

### Missing Compliance

**Solution**: Provide export compliance information in App Store Connect for each build.

## Official Documentation

* [Apple Developer Program](https://developer.apple.com/programs/)
* [App Store Connect](https://appstoreconnect.apple.com/)
* [App Store Review Guidelines](https://developer.apple.com/app-store/review/guidelines/)
* [TestFlight Documentation](https://developer.apple.com/testflight/)
* [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/)
* [EAS Submit](https://docs.expo.dev/submit/ios/)

## Next Steps

* [Configure Google Play Console](/configuration/google-play-setup)
* [Set Up EAS](/configuration/eas-setup)
* [Submit to App Store](/configuration/eas-setup#submitting-to-app-stores)
