App Store Release Prep
Installation
SKILL.md
App Store Release Prep
Turn a mobile release into a reproducible pipeline - correct signing, monotonic build numbers, complete privacy declarations - so submission to App Store Connect or Play Console succeeds on the first upload.
Workflow
-
Establish identity and signing first; it is the most common blocker.
- iOS: a distribution build needs a distribution certificate plus a provisioning profile whose app id, capabilities, and entitlements all match the build. Store and sync these with Fastlane
matchin a shared encrypted repo so every machine and CI sign identically. Verify the profile matches the bundle id and enabled capabilities before building. Note that distribution certificates expire after one year - track the expiry so it never surprises a release week. - Android: sign with an upload key and enroll in Play App Signing so Google holds the app signing key. A lost upload key is recoverable via the Play Console; protect the app signing key regardless.
- iOS: a distribution build needs a distribution certificate plus a provisioning profile whose app id, capabilities, and entitlements all match the build. Store and sync these with Fastlane
-
Set both version numbers correctly.
- Marketing version (
CFBundleShortVersionString/versionName) is human-facing and may repeat across uploads. - Build number (
CFBundleVersion/versionCode) must strictly increase on every upload - including re-uploads of a rejected build. Automate it withincrement_build_numberor derive it from the CI build count so you never collide with an existing upload. Android'sversionCodehas a hard ceiling of 2,100,000,000 - avoid date-encoded schemes that burn through the range.
- Marketing version (
-
Build the signed artifact through a defined lane.
- Define Fastlane lanes:
build,beta,release. Usegym/build_appto produce the signed.ipa/.aab,pilot/upload_to_testflightandsupply/upload_to_play_storeto push it,deliverfor metadata/screenshots. - Run the lane on a tagged commit in CI so releases are reproducible, not laptop-dependent.
- Remember TestFlight builds expire 90 days after upload - a beta program needs a re-upload cadence well inside that window.
- Define Fastlane lanes: