| name | mac-app-store-submit |
| description | Guide for submitting Mac apps to the App Store via App Store Connect. Use when the user wants to publish a macOS app, submit to the Mac App Store, or fill out App Store Connect metadata. Triggers on: submit to app store, publish mac app, app store connect, mac app store submission. |
| allowed-tools | Bash, Read, Write, WebFetch, mcp__chrome-devtools__* |
Mac App Store Submission Guide
Step-by-step process for submitting a macOS app to the Mac App Store via App Store Connect.
Automation Level
~95% automatable via Chrome DevTools MCP. The entire App Store Connect UI flow (metadata, screenshots, submission) can be handled automatically.
Only manual step: Certificate and provisioning profile setup in Xcode (one-time per app/team).
Prerequisites
Before submitting, ensure you have:
- Apple Developer account ($99/year)
- [MANUAL] Distribution certificate created in Xcode (Signing & Capabilities → Team → Manage Certificates)
- [MANUAL] Provisioning profile for App Store distribution (auto-created by Xcode when you archive)
- Build archived and uploaded (can be automated - see Build Upload section)
Required Metadata (Must Complete Before Submission)
1. App Privacy (/distribution/privacy)
Two parts:
- Privacy Policy URL - Required. Can use GitHub README section (e.g.,
https://github.com/user/repo#privacy)
- Data Collection Questionnaire - Click "Get Started", answer questions about data collection
- For simple local-only apps: Select "No, we do not collect data from this app"
- Click "Publish" after completing
2. Age Ratings (/distribution/info → scroll to Age Ratings)
Click "Set Up Age Ratings" and complete 7 steps:
- Step 1: Features - Parental Controls, Age Assurance, Web Access, User Content, Messaging, Advertising (select NO for simple apps)
- Step 2: Mature Themes - Profanity, Horror, Alcohol/Drugs (select NONE)
- Step 3: Medical/Wellness - Medical content, Health topics (select NONE/NO)
- Step 4: Sexuality - Suggestive themes, Nudity (select NONE)
- Step 5: Violence - Cartoon, Realistic, Graphic, Weapons (select NONE)
- Step 6: Gambling - Simulated gambling, Contests, Gambling, Loot boxes (select NONE/NO)
- Step 7: Confirmation - Review calculated rating (usually 4+ for utility apps)
3. Primary Category (/distribution/info)
Select from dropdown (common choices):
- Productivity - Document editors, task managers, utilities
- Developer Tools - IDEs, debugging tools
- Utilities - System tools, file managers
- Graphics & Design - Image editors, design tools
Note: The category dropdown may appear empty visually but have a value set. Use JavaScript if needed:
document.querySelector('select[name*="primary"]').value = 'PRODUCTIVITY';
document.querySelector('select[name*="primary"]').dispatchEvent(new Event('change', { bubbles: true }));
4. Pricing (/distribution/pricing)
- Click "Add Pricing"
- Select Base Country (default: United States USD)
- Choose Price tier ($0.00 for free apps)
- Click Next → Next → Confirm
5. Content Rights (/distribution/info)
Click "Set Up Content Rights Information":
- For original content apps: Select "No, it does not contain, show, or access third-party content"
- For apps with licensed content: Select "Yes" and confirm you have rights
Version Page Metadata (/distribution/macos/version/inflight)
Required Fields:
- Screenshot - At least 1 screenshot (1280x800 or 1440x900 for Mac)
- Promotional Text - Short marketing text (optional but recommended)
- Description - Full app description
- Keywords - Comma-separated search terms
- Support URL - Link to support page or GitHub issues
- Copyright - Format: "2024 Your Name" or "2024 Company Name"
Build Selection:
- Click "Add Build" or the build section
- Select your uploaded build from the list
- Click "Done"
Submission Process
- Complete all required sections above
- Navigate to version page (
/distribution/macos/version/inflight)
- Click "Add for Review" button
- If errors appear, click the links to fix missing items
- Once ready, "Draft Submission" dialog appears
- Click "Submit for Review"
- Status changes to "Waiting for Review"
Common Errors & Fixes
| Error | Solution |
|---|
| "Privacy Policy URL required" | Go to App Privacy, click Edit, add URL |
| "Age Rating frequency required" | Complete all 7 steps of Age Rating setup |
| "Primary category required" | Select category in App Information |
| "Price tier required" | Set up pricing (even for free apps) |
| "Content Rights required" | Click "Set Up Content Rights Information" |
| Phone number validation fails | Use format +14155551234 (no hyphens) |
App Store Connect URLs
Base URL: https://appstoreconnect.apple.com/apps/{APP_ID}/distribution/
| Section | Path |
|---|
| Version Page | macos/version/inflight |
| App Information | info |
| App Privacy | privacy |
| Pricing | pricing |
| App Review | reviewsubmissions |
Timeline
- Review time: Typically 24-48 hours
- Email notification: Sent when review complete
- If rejected: You'll receive specific feedback to address
Build Upload (Automatable)
After archiving in Xcode, upload via command line:
xcrun altool --upload-app -f /path/to/App.pkg -t macos -u "apple-id@example.com" -p "@keychain:AC_PASSWORD"
Or use xcrun notarytool for newer workflows:
xcrun notarytool submit App.zip --apple-id "apple-id@example.com" --team-id TEAMID --password "@keychain:AC_PASSWORD" --wait
Note: Store App Store Connect password in keychain: xcrun altool --store-password-in-keychain-item AC_PASSWORD -u "apple-id@example.com" -p "app-specific-password"
Chrome DevTools MCP Automation
The entire App Store Connect UI can be automated using Chrome DevTools MCP:
- Navigate directly to sections using URL patterns (see App Store Connect URLs table)
- Click buttons using
mcp__chrome-devtools__click with element refs from snapshots
- Fill forms using
mcp__chrome-devtools__fill or mcp__chrome-devtools__form_input
- Upload screenshots by clicking the upload area and using file input
- Handle stubborn dropdowns with JavaScript execution (see Category dropdown workaround)
Workflow:
- Take snapshot with
mcp__chrome-devtools__take_snapshot
- Find element refs for buttons/inputs
- Click/fill as needed
- Repeat until submission complete
Tips
- Save frequently - App Store Connect can lose unsaved changes
- Check for yellow warning banners - They indicate missing required items
- Export Compliance - Usually just needs one checkbox for standard encryption
- Test before submitting - Use TestFlight to verify the build works
- Use direct URLs - Navigate directly to sections rather than clicking through menus