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_VERSIONin 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_VERSIONmatches 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.