Version State Routing
Before doing ANY metadata or submission work, check the pre-flight version state from the system prompt and route accordingly.
Version State Reference
| State |
Editable? |
Description |
PREPARE_FOR_SUBMISSION |
Yes |
Version created, ready for metadata and submission |
DEVELOPER_REJECTED |
Yes |
Developer pulled it back from review, editable again |
WAITING_FOR_REVIEW |
No |
Submitted, waiting in Apple's queue |
IN_REVIEW |
No |
Apple is actively reviewing |
REJECTED |
No |
Apple rejected the submission |
READY_FOR_SALE |
No |
Live on the App Store |
PENDING_DEVELOPER_RELEASE |
No |
Approved, waiting for developer to release |
PROCESSING_FOR_APP_STORE |
No |
Apple is processing after approval |
First Action: Route by State
| State |
Action |
PREPARE_FOR_SUBMISSION |
Proceed with metadata and submission normally |
DEVELOPER_REJECTED |
Inform user this is a resubmission, then proceed normally |
WAITING_FOR_REVIEW |
Tell user the version is in queue. Ask: cancel review, create new version, or wait |
IN_REVIEW |
Tell user Apple is reviewing. Ask: cancel review (warn loses queue slot), create new version, or wait |
REJECTED |
Ask: view rejection reasons, or create a new version |
READY_FOR_SALE |
This is the live version. Ask what version number for the update |
PENDING_DEVELOPER_RELEASE |
Ask: release now, create new version, or wait |
PROCESSING_FOR_APP_STORE |
Tell user to wait and re-check later, nothing can be done now |
| No versions exist |
Ask what version number for the first release |
Creating a New Version
When a new version is needed (live app update, after rejection, etc.):
- Ask user for version number with a suggestion based on the current live version.
- Create via:
asc versions create --app APP_ID --version VERSION --platform IOS
- If building is also needed, the
MARKETING_VERSION in the Xcode project must match the new version number. Update it before building.
Cancelling a Submission
When user wants to cancel WAITING_FOR_REVIEW or IN_REVIEW:
asc submit status --app APP_ID --output json # find submission ID
asc submit cancel --id SUBMISSION_ID --confirm
After cancellation, version returns to PREPARE_FOR_SUBMISSION and can proceed normally.
Version Number + Build Number
- Version number (
MARKETING_VERSION / CFBundleShortVersionString): user-facing, e.g. "1.1" - must match the ASC version.
- Build number (
CURRENT_PROJECT_VERSION / CFBundleVersion): internal, must be unique and higher than any previous upload.
- When creating a new version, check if the Xcode project's
MARKETING_VERSION matches and update it if not.
Multiple Versions
When multiple non-live versions exist (e.g. 1.0 WAITING_FOR_REVIEW + 1.1 PREPARE_FOR_SUBMISSION):
- Report all of them to the user.
- Ask which one to work with.
- If user's intent matches an existing editable version, use it.
1---2name: asc-version-routing3description: Route App Store Connect actions based on version state. Use when the user wants to submit, update, or manage an app version and you need to determine the correct workflow based on the current version state.4---56# Version State Routing78Before doing ANY metadata or submission work, check the pre-flight version state from the system prompt and route accordingly.910## Version State Reference1112| State | Editable? | Description |13|-------|-----------|-------------|14| `PREPARE_FOR_SUBMISSION` | Yes | Version created, ready for metadata and submission |15| `DEVELOPER_REJECTED` | Yes | Developer pulled it back from review, editable again |16| `WAITING_FOR_REVIEW` | No | Submitted, waiting in Apple's queue |17| `IN_REVIEW` | No | Apple is actively reviewing |18| `REJECTED` | No | Apple rejected the submission |19| `READY_FOR_SALE` | No | Live on the App Store |20| `PENDING_DEVELOPER_RELEASE` | No | Approved, waiting for developer to release |21| `PROCESSING_FOR_APP_STORE` | No | Apple is processing after approval |2223## First Action: Route by State2425| State | Action |26|-------|--------|27| `PREPARE_FOR_SUBMISSION` | Proceed with metadata and submission normally |28| `DEVELOPER_REJECTED` | Inform user this is a resubmission, then proceed normally |29| `WAITING_FOR_REVIEW` | Tell user the version is in queue. Ask: cancel review, create new version, or wait |30| `IN_REVIEW` | Tell user Apple is reviewing. Ask: cancel review (warn loses queue slot), create new version, or wait |31| `REJECTED` | Ask: view rejection reasons, or create a new version |32| `READY_FOR_SALE` | This is the live version. Ask what version number for the update |33| `PENDING_DEVELOPER_RELEASE` | Ask: release now, create new version, or wait |34| `PROCESSING_FOR_APP_STORE` | Tell user to wait and re-check later, nothing can be done now |35| No versions exist | Ask what version number for the first release |3637## Creating a New Version3839When a new version is needed (live app update, after rejection, etc.):40411. Ask user for version number with a suggestion based on the current live version.422. Create via: `asc versions create --app APP_ID --version VERSION --platform IOS`433. If building is also needed, the `MARKETING_VERSION` in the Xcode project must match the new version number. Update it before building.4445## Cancelling a Submission4647When user wants to cancel `WAITING_FOR_REVIEW` or `IN_REVIEW`:4849```bash50asc submit status --app APP_ID --output json # find submission ID51asc submit cancel --id SUBMISSION_ID --confirm52```5354After cancellation, version returns to `PREPARE_FOR_SUBMISSION` and can proceed normally.5556## Version Number + Build Number5758- **Version number** (`MARKETING_VERSION` / `CFBundleShortVersionString`): user-facing, e.g. "1.1" - must match the ASC version.59- **Build number** (`CURRENT_PROJECT_VERSION` / `CFBundleVersion`): internal, must be unique and higher than any previous upload.60- When creating a new version, check if the Xcode project's `MARKETING_VERSION` matches and update it if not.6162## Multiple Versions6364When multiple non-live versions exist (e.g. 1.0 `WAITING_FOR_REVIEW` + 1.1 `PREPARE_FOR_SUBMISSION`):6566- Report all of them to the user.67- Ask which one to work with.68- If user's intent matches an existing editable version, use it.