Skip to main content

App Store Submission

Publish with publish appstore --submit, then use validate or submit for follow-up checks
Automate the complete App Store submission process with the canonical high-level publish command, then use the lower-level submission lifecycle commands to inspect or cancel review state when needed.

Overview

Use these surfaces deliberately:
  • asc publish appstore --submit - canonical App Store publish path
  • asc release stage - prepare a version without submitting it
  • asc validate - canonical readiness check before submission
  • asc submit status - inspect submission or version review state
  • asc submit cancel - cancel an active submission
In 1.0, the deprecated asc submit preflight and deprecated asc submit create paths were removed. Use the Migrate to 1.0 guide if you are updating older scripts.

Prerequisites

Before submitting, ensure you have:
  1. A processed build uploaded to App Store Connect
  2. App Store version created with required metadata
  3. All localizations configured with required fields
  4. Screenshots uploaded for at least one device type
  5. Privacy information and app review details completed

Canonical Publish Workflow

1

Prepare your app version

Create an App Store version if it doesn’t exist:
Or list existing versions:
2

Verify localization metadata

The CLI automatically validates that required localization fields are present:
  • Description
  • Keywords
  • What’s New text
  • Marketing URL (if applicable)
Update missing localizations:
Update version-specific metadata:
3

Find your build ID

List builds for your app version:
Or get the latest build:
4

Run the publish command

Publish with the canonical App Store flow:
Use asc release stage instead when you want the same preparation flow without creating the review submission yet:

Lower-level submission lifecycle

Use the submit command family when you need to inspect or manage the review submission itself instead of running the full publish pipeline.

Validate readiness

Monitoring Submission Status

1

Check submission status

Using submission ID:
Using version ID:
2

Check version state

View detailed version information:
asc versions view is the canonical command here. If older scripts still use the deprecated asc versions get, update them during your 1.0 migration.The version state indicates the current stage:
  • PREPARE_FOR_SUBMISSION: Metadata incomplete
  • WAITING_FOR_REVIEW: Submitted, awaiting review
  • IN_REVIEW: Currently being reviewed
  • PENDING_DEVELOPER_RELEASE: Approved, awaiting your release
  • READY_FOR_SALE: Live on the App Store
  • REJECTED: Rejected by review team

Managing Submissions

Cancel a Submission

If you need to cancel a submission before review:
Or cancel using version ID:
You can only cancel submissions that are in WAITING_FOR_REVIEW state. Once review begins, you cannot cancel.

Resubmit After Changes

If you need to make changes after submitting:
1

Cancel the current submission

2

Make your changes

Update metadata, upload new screenshots, or attach a different build as needed.
3

Resubmit

Complete Example: iOS App Submission

Here’s a complete workflow for publishing an iOS app:

Preflight Validation

The CLI performs automatic preflight checks before submission:

Localization Validation

Checks that all required fields are present for each localization:
  • Description
  • Keywords
  • What’s New text (for updates)
If any fields are missing, the submission will fail with a detailed error:

Fixing Validation Errors

Copy complete localization from one locale to another:
Then update locale-specific fields:

Troubleshooting

”No app store version localizations found”

Problem: The version has no localizations configured. Solution: Add at least one localization:

“Failed to attach build”

Problem: The build may not be compatible with the version or is still processing. Solution: Verify build status:
Ensure the build:
  • Has finished processing
  • Matches the app ID
  • Supports the correct platform
  • Has passed automatic checks

”Stale review submission found”

Problem: A previous submission attempt left an orphaned submission. Solution: The CLI automatically cancels stale submissions. If you see this warning, it’s informational and the new submission will proceed.

Submission Rejected

If your submission is rejected:
  1. Check rejection details in App Store Connect web interface
  2. Address the issues mentioned in the rejection
  3. Upload a new build if code changes are needed, or just update metadata
  4. Resubmit with the canonical publish command:

Platform-Specific Considerations

macOS Apps

For macOS apps, specify the MAC_OS platform:

tvOS Apps

For tvOS apps, use the TV_OS platform:

visionOS Apps

For visionOS apps, use the VISION_OS platform:

Best Practices

  1. Always use --confirm flag: Prevents accidental submissions
  2. Test with TestFlight first: Distribute to internal testers before submitting to the App Store
  3. Validate metadata beforehand: Use asc localizations list to verify all required fields are present
  4. Monitor submission status: Check status regularly during the review process
  5. Keep builds ready: Have builds processed and ready before starting the submission workflow
  6. Use version IDs for lifecycle automation: Version IDs are reliable for submit status and submit cancel
  7. Handle stale submissions: The CLI automatically cleans up orphaned submissions, but verify in case of errors