| name | asc-submission-health |
| description | Preflight App Store submissions, submit builds, and monitor review status with asc. Use when shipping or troubleshooting review submissions. Use when the user says "submit to App Store", "why was my submission rejected", "check my review status", "submit for review", or "my app is stuck in review". |
asc submission health
Use this skill to reduce review submission failures and monitor status.
Preconditions
- Auth configured and app/version/build IDs resolved.
- Build is processed (not in processing state).
- All required metadata is complete.
Pre-submission Checklist
1. Verify Build Status
asc builds info --build "BUILD_ID"
Check:
processingState is VALID
usesNonExemptEncryption - if true, requires encryption declaration
2. Encryption Compliance
If usesNonExemptEncryption: true:
asc encryption declarations list --app "APP_ID"
asc encryption declarations create \
--app "APP_ID" \
--app-description "Uses standard HTTPS/TLS" \
--contains-proprietary-cryptography=false \
--contains-third-party-cryptography=true \
--available-on-french-store=true
asc encryption declarations assign-builds \
--id "DECLARATION_ID" \
--build "BUILD_ID"
Better approach: Add ITSAppUsesNonExemptEncryption = NO to Info.plist and rebuild.
3. Content Rights Declaration
Required for all App Store submissions:
asc apps get --id "APP_ID" --output json | jq '.data.attributes.contentRightsDeclaration'
asc apps update --id "APP_ID" --content-rights "DOES_NOT_USE_THIRD_PARTY_CONTENT"
Valid values:
DOES_NOT_USE_THIRD_PARTY_CONTENT
USES_THIRD_PARTY_CONTENT
4. Version Metadata
asc versions get --version-id "VERSION_ID" --include-build
asc versions update --version-id "VERSION_ID" --copyright "2026 Your Company"
5. Localizations Complete
asc localizations list --version "VERSION_ID"
6. Screenshots Present
Each locale needs screenshots for the target platform.
7. App Info Localizations (Privacy Policy)
asc apps info list --app "APP_ID"
asc localizations list --app "APP_ID" --type app-info --app-info "APP_INFO_ID"
Submit
Using Review Submissions API (Recommended)
asc review submissions-create --app "APP_ID" --platform IOS
asc review items-add \
--submission "SUBMISSION_ID" \
--item-type appStoreVersions \
--item-id "VERSION_ID"
asc review submissions-submit --id "SUBMISSION_ID" --confirm
Using Submit Command
asc submit create --app "APP_ID" --version "1.2.3" --build "BUILD_ID" --confirm
Use --platform when multiple platforms exist.
Monitor
asc submit status --id "SUBMISSION_ID"
asc submit status --version-id "VERSION_ID"
asc review submissions-list --app "APP_ID" --paginate
Cancel / Retry
asc submit cancel --id "SUBMISSION_ID" --confirm
asc review submissions-cancel --id "SUBMISSION_ID" --confirm
Fix issues, then re-submit.
Common Submission Errors
"Version is not in valid state"
Check:
- Build is attached and VALID
- Encryption declaration approved (or exempt)
- Content rights declaration set
- All localizations complete
- Screenshots present for all locales
"Export compliance must be approved"
The build has usesNonExemptEncryption: true. Either:
- Upload export compliance documentation
- Or rebuild with
ITSAppUsesNonExemptEncryption = NO in Info.plist
"Multiple app infos found"
Use --app-info flag with the correct app info ID:
asc apps info list --app "APP_ID"
Notes
asc submit create uses the new reviewSubmissions API automatically.
- Use
--output table when you want human-readable status.
- macOS submissions follow the same process but use
--platform MAC_OS.