store-shots

Checks

Every readiness check, what it means and how to fix it, before anything leaves your Mac.

Ship (Command-4) is the last look before anything leaves your Mac. The checks follow Apple's own guidance; each says what is wrong and links to where you fix it. Check Again reruns them.

Ship: the checks, each with how to fix it

CheckWhat it wants
No template placeholders leftNo __APP_NAME__-style placeholders in the app's files, and no theme prompt left in the screenshot copy
Metadata present for every localeEvery language has its store text (What's New only from the second version on)
Metadata within App Store limitsEvery field within Apple's limit; keywords in bytes
Keywords follow Apple's guidanceNo plurals of words already there, category names, "app", repeats, very short terms, or words from the name
Screenshot sets cover the sizes Apple requiresiPhone 6.1" (a warning without it), and iPad 13" for an iPad app
Screenshots complete per locale and targetEvery planned file exists, at the exact size, without alpha
Same screenshot count in every localeNo language with more or fewer screenshots than the others
A Dark Mode screenshot, if the app has Dark ModeOne screen marked Shows Dark Mode when the app follows the system appearance
App previews meet Apple's specificationSizes, length, frame rate and count of the videos in store/previews/
Header and search results imagesEach one rendered is a size App Store Connect takes, a PNG, opaque
App icon is 1024x1024 opaque PNGThe store icon from app.json or the asset catalog
Dark and tinted app iconsVariants for iOS 18 and later; a warning, since iOS derives them when they are missing
Fastlane credentials presentAn App Store Connect key the lanes can use (checked to exist, never read)
App version consistentThe screenshots were generated for the version the app is at

A failing check blocks the upload lanes. Warnings do not.

From the command line:

store-shots readiness            # the same checks, with exit code 1 on a failure
store-shots readiness --json