Poor App Store submission experience: repeated failed builds due to uncaught issues

Resolved 💬 3 comments Opened Apr 9, 2026 by BSKapps Closed Apr 12, 2026

Summary

A user spent an entire day trying to submit a macOS app (QuickIP Lite) to the App Store. What should have been a 10-minute task resulted in 8+ builds being uploaded to Apple, most failing due to issues Claude should have caught before archiving.

Issues encountered

  1. Quarantine extended attributes — Claude added image files to the project without clearing com.apple.quarantine xattr. Apple rejects packages containing quarantined files. Claude said "ready to go" without checking.
  1. Icon confusion — Claude overwrote correct icon assets with old backup versions, undoing work from earlier sessions. Then had to restore from git.
  1. Pre-baked rounded corners on app icon — Claude didn't catch that the app icon had rounded corners already baked in, causing Apple to render it with a visible white border when applying its own mask.
  1. False confidence — Claude repeatedly said builds were "ready to archive" without actually verifying. No pre-submission checks were run (quarantine flags, entitlements, plist validation, asset verification).
  1. Unnecessary build number burns — Each failed upload burns a build number with Apple. The user went from build 3 to build 9 in one day due to preventable failures.

Expected behavior

  • Claude should run pre-submission validation before confirming readiness (quarantine check, entitlement check, asset verification, build number verification)
  • Claude should never say "ready" without actually running verification commands
  • Claude should not overwrite files without understanding the current state
  • Claude should understand App Store submission requirements (no quarantine xattr, proper icon formatting, etc.)

Environment

  • Claude Code CLI on macOS
  • Native Swift macOS app targeting App Store (sandboxed)
  • Xcode archive → App Store Connect upload workflow

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗