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

# Builds

# builds

> Manage builds, uploads, processing, and TestFlight distribution

The `builds` command manages uploads, processing state, TestFlight distribution, and build metadata in App Store Connect.

## Usage

```bash theme={null} theme={null}
asc builds <subcommand> [flags]
```

## Common subcommands

### Upload builds

Upload an IPA or PKG to App Store Connect:

```bash theme={null} theme={null}
asc builds upload --app APP_ID --ipa /path/to/MyApp.ipa
asc builds upload --app APP_ID --pkg /path/to/MyMacApp.pkg --version 1.0.0 --build-number 1
```

### List builds

List builds for an app and filter by version, build number, or processing state:

```bash theme={null} theme={null}
asc builds list --app APP_ID
asc builds list --app APP_ID --sort -uploadedDate
asc builds list --app APP_ID --version 1.2.3 --platform IOS
asc builds list --app APP_ID --processing-state PROCESSING
```

### Inspect build details

Resolve a build directly by ID or by app context:

```bash theme={null} theme={null}
asc builds info --build-id BUILD_ID
asc builds info --app APP_ID --latest
asc builds info --app APP_ID --build-number 42 --version 1.2.3 --platform IOS
```

### Wait for processing

```bash theme={null} theme={null}
asc builds wait --build-id BUILD_ID
asc builds wait --app APP_ID --latest
```

### Distribute to TestFlight groups

```bash theme={null} theme={null}
asc builds add-groups --app APP_ID --latest --group "External Testers"
asc builds add-groups --app APP_ID --latest --group "GROUP_ID" --submit --confirm
asc builds remove-groups --app APP_ID --latest --group "GROUP_ID" --confirm
```

### Expire builds

```bash theme={null} theme={null}
asc builds expire --build-id BUILD_ID --confirm
asc builds expire-all --app APP_ID --older-than 90d --dry-run
asc builds expire-all --app APP_ID --keep-latest 5 --confirm
```

## Common workflows

### Upload and distribute the latest build

```bash theme={null} theme={null}
# Upload the build
asc builds upload --app 123456789 --ipa MyApp.ipa

# Wait until processing completes
asc builds wait --app 123456789 --latest

# Add the processed build to a TestFlight group
asc builds add-groups --app 123456789 --latest --group "External Testers"
```

### Inspect the latest iOS build for a version

```bash theme={null} theme={null}
asc builds info --app 123456789 --latest --version 1.2.0 --platform IOS
```

## Useful flags

<ParamField path="--app" type="string" required>
  App Store Connect app ID, bundle ID, or exact app name
</ParamField>

<ParamField path="--ipa" type="string">
  Path to an `.ipa` file for iOS, tvOS, or visionOS uploads
</ParamField>

<ParamField path="--pkg" type="string">
  Path to a `.pkg` file for macOS uploads
</ParamField>

<ParamField path="--version" type="string">
  Filter or target a marketing version string (`CFBundleShortVersionString`)
</ParamField>

<ParamField path="--build-number" type="string">
  Filter or target a specific build number (`CFBundleVersion`)
</ParamField>

<ParamField path="--processing-state" type="string">
  Filter by processing state: `VALID`, `PROCESSING`, `FAILED`, `INVALID`, or `all`
</ParamField>

<ParamField path="--latest" type="boolean">
  Resolve the latest matching build in an app-scoped selector
</ParamField>

## Related

<CardGroup cols={2}>
  <Card title="TestFlight command" icon="plane" href="/commands/testflight">
    Manage TestFlight groups, testers, feedback, and review flows
  </Card>

  <Card title="TestFlight guide" icon="book-open" href="/guides/testflight">
    Complete TestFlight distribution guide
  </Card>
</CardGroup>
