release
Manage App Store release configurations
release
Manage App Store release configurations for iOS app distribution.
What Are Release Configurations?
Release configurations control how your app is submitted and released on the App Store:
- Auto-submit - Automatically submit for review after upload
- Phased release - Gradually roll out to users over 7 days
- Release type - Manual, after approval, or scheduled
- What's New - Release notes shown to users
- URLs - Support, marketing, and privacy policy links
Commands Overview
| Command | Description |
|---|---|
mysigner release list |
List all release configurations |
mysigner release show ID |
Show details for a configuration |
mysigner release create |
Create a new configuration |
mysigner release update ID |
Update an existing configuration |
release list
List all release configurations.
Usage
mysigner release list [options]
Options
| Option | Alias | Description |
|---|---|---|
--bundle-id |
-b |
Filter by bundle identifier |
Example
$ mysigner release list
🚀 App Store Releases
• My App (ID: 1)
Bundle ID: com.example.app
Release Type: after_approval
Auto Submit: Yes
Phased Release: Yes
Version: 1.2.0
• Other App (ID: 2)
Bundle ID: com.example.app2
Release Type: manual
Auto Submit: No
Phased Release: No
Version: 2.0.0
Total: 2 release(s)
Filter by Bundle ID
mysigner release list --bundle-id com.example.app
release show
Show full details for a release configuration.
Usage
mysigner release show ID
Example
$ mysigner release show 1
🚀 Release Configuration (ID: 1)
Details:
App Name: My App
Bundle ID: com.example.app
Version: 1.2.0
Release Type: after_approval
Auto Submit: Yes
Phased Release: Yes
What's New:
Bug fixes and performance improvements
URLs:
Support: https://support.example.com
Marketing: https://example.com
Privacy: https://example.com/privacy
Scheduled Date: 2026-04-01T10:00:00Z
release create
Create a new release configuration for a bundle ID.
Usage
mysigner release create [options]
Options
| Option | Description | Required |
|---|---|---|
--bundle-id-id |
Bundle ID record ID (numeric — not the reverse-DNS string). Find it via mysigner bundleid list. |
Yes |
--whats-new |
Release notes / What's New text | No |
--support-url |
Support URL | No |
--marketing-url |
Marketing URL | No |
--privacy-url |
Privacy policy URL | No |
--auto-submit |
Auto-submit for review | No |
--phased-release |
Enable phased release (7-day rollout) | No |
--release-type |
manual, after_approval, or scheduled | No |
--scheduled-date |
Scheduled release date (ISO 8601) | No |
Examples
# Basic setup with auto-submit and phased release
mysigner release create --bundle-id-id 42 --auto-submit --phased-release
# Full configuration
mysigner release create \
--bundle-id-id 42 \
--whats-new "New features and bug fixes" \
--support-url "https://support.example.com" \
--privacy-url "https://example.com/privacy" \
--auto-submit \
--phased-release \
--release-type after_approval
Example Output
$ mysigner release create --bundle-id-id 42 --auto-submit --phased-release
🚀 Creating release configuration...
✓ Release configuration created!
Details:
ID: 1
Bundle ID: com.example.app
Release Type: after_approval
Auto Submit: Yes
Phased Release: Yes
Conflict (Already Exists)
Each bundle ID can have only one release configuration. If one already exists:
$ mysigner release create --bundle-id-id 42
✗ Error: Release configuration already exists for this bundle ID
💡 Use 'mysigner release update ID' to modify it
Run 'mysigner release list' to find the ID
release update
Update an existing release configuration. Only the provided options are changed.
Usage
mysigner release update ID [options]
Options
Same options as release create (all optional for update).
Examples
# Update release notes
mysigner release update 1 --whats-new "Bug fixes and improvements"
# Enable phased release
mysigner release update 1 --phased-release
# Disable auto-submit
mysigner release update 1 --no-auto-submit
# Set up scheduled release
mysigner release update 1 \
--release-type scheduled \
--scheduled-date 2026-04-01T10:00:00Z
# Update URLs
mysigner release update 1 \
--support-url "https://support.example.com" \
--marketing-url "https://example.com" \
--privacy-url "https://example.com/privacy"
Example Output
$ mysigner release update 1 --whats-new "New features" --auto-submit
🚀 Updating release configuration...
✓ Release configuration updated!
Details:
ID: 1
Bundle ID: com.example.app
Release Type: after_approval
Auto Submit: Yes
Phased Release: Yes
Release Types
| Type | Description |
|---|---|
manual |
Manually release after approval |
after_approval |
Automatically release once Apple approves |
scheduled |
Release at a specific date/time (requires --scheduled-date) |
Heads-up on casing:
mysigner release create/updateaccepts the lowercase forms (manual,after_approval,scheduled), whilemysigner shipandmysigner submitexpect the uppercase enum (MANUAL,AFTER_APPROVAL,SCHEDULED). Both forms refer to the same release behavior.
CI/CD Usage
Release configurations are especially useful in CI/CD pipelines:
# Configure release before building
mysigner release update 1 \
--whats-new "$(cat RELEASE_NOTES.md)" \
--auto-submit
# Build and ship
mysigner ship appstore
GitHub Actions Example
- name: Configure release
run: |
mysigner release update 1 \
--whats-new "${{ github.event.release.body }}" \
--auto-submit
- name: Ship to App Store
run: mysigner ship appstore
Troubleshooting
"Release not found"
Check available release configurations:
mysigner release list
Finding the Bundle ID Record ID
The --bundle-id-id is the numeric ID of the bundle ID record, not the bundle identifier string. Find it with:
mysigner bundleid list
# Look for the ID number next to your bundle identifier