Docs
Shipshot turns raw phone captures into store-ready screenshot sets. This covers what it infers, what it cannot, and the failure modes worth knowing before you upload.
Getting started
- 01Open the studio and drop in screenshots straight off your phone. No account needed.
- 02Dimensions are read locally to identify the device, which fixes the frame, corner radius, Dynamic Island geometry and status-bar height.
- 03Copy is generated per screen. Edit any of it — the preview updates as you type.
- 04Export. You are asked to sign in only at this point.
Store size reference
Every canvas Shipshot renders, and the slot that accepts it.
| Canvas | Slot | Notes |
|---|---|---|
| 1284×2778 | iPhone 6.5" | 6.5" Display slot |
| 1242×2688 | iPhone 6.5" alt | also accepted by 6.5" |
| 1320×2868 | iPhone 6.9" | 6.9" slot only |
| 1290×2796 | iPhone 6.7" | 6.7" slot only |
| 2064×2752 | iPad 13" | iPad 12.9"/13" slot |
| 2048×2732 | iPad 13" alt | also accepted by iPad 13" |
| 1440×3120 | Play phone | Play Store phone |
Apple accepts a maximum of 10 screenshots per display size per localisation, and shows the first three on the install sheet. Google Play accepts 8.
Apple's required sizes, exactly
This is what the upload box in App Store Connect will actually accept, per slot, in both orientations. Anything else bounces.
| iPhone slot | Portrait / landscape | Status | Notes |
|---|---|---|---|
| 6.9" DisplayiPhone 16 Pro Max, 17 Pro Max | 1320 × 28682868 × 1320or 1290 × 2796 / 2796 × 1290 | Accepted | Satisfies the iPhone requirement on its own. |
| 6.5" DisplayiPhone 11 Pro Max, XS Max | 1284 × 27782778 × 1284or 1242 × 2688 / 2688 × 1242 | Accepted | The other accepted option. One of 6.5" or 6.9" is enough. |
| 6.7" DisplayiPhone 14/15 Pro Max | 1290 × 27962796 × 1290 | Optional | Optional. Accepted, but not required on its own. |
| iPad slot | Portrait / landscape | Status | Notes |
|---|---|---|---|
| 13" DisplayiPad Pro 12.9" and 13" | 2064 × 27522752 × 2064or 2048 × 2732 / 2732 × 2048 | Accepted | Required if your app supports iPad. Scales down to every smaller iPad. |
You only need one iPhone size
Apple requires a single iPhone screenshot — 6.5" or 6.9" — and a single iPad 13" screenshot. Everything smaller is scaled automatically. Most guides still tell you to build six sets; you do not have to.
- 1–10 screenshots per slot, per language
- Up to 3 app previews (video, optional)
- Formats: .png, .jpg, .jpeg
- The first three screenshots show on the install sheet
Slots vs. devices
This is the single most common cause of a rejected upload. App Store Connect validates a file against the slot you drop it into, not the device you captured on. A perfectly valid 1320 × 2868 file from an iPhone 16 Pro Max is rejected by the 6.5" slot, which wants 1284 × 2778 or 1242 × 2688.
All four iPhone canvases are within 0.5% of the same aspect ratio, so one capture set legitimately feeds all of them. Shipshot renders every one and names each output folder after its slot, then reads each PNG's header back to confirm its dimensions before you download.
Metadata character limits
Every text field on the version page, with the limit App Store Connect enforces. Hitting one of these halfway through a submission is the classic way to lose an afternoon.
| Field | Limit | What it is |
|---|---|---|
| App namerequired | 30 | The name on the product page and the Home Screen.30 characters includes spaces. Keyword stuffing here gets rejected. |
| Subtitle | 30 | One line under the name. Your positioning statement.Indexed for search, so it is worth more than most people give it. |
| Promotional Text | 170 | Sits above the description on the product page.The only marketing copy you can change WITHOUT shipping a new build or waiting for review. Use it for launches and sales. |
| Descriptionrequired | 4,000 | The full pitch. Only the first ~3 lines show before 'more'.Front-load the value. Almost nobody taps 'more'. |
| Keywords | 100 | Comma-separated search terms. Never shown to users.100 characters total, not per keyword. Skip spaces after commas — they burn characters. Do not repeat words already in your name or subtitle. |
| Support URLrequired | URL | A page where users can get help.Required. It must resolve, and a dead link is a rejection. |
| Marketing URL | URL | Your product site. |
| Versionrequired | URL | The public version string, e.g. 1.0.Must match the version in the build you upload, or you cannot select it. |
| Copyrightrequired | 200 | Year and rights holder, e.g. 2026 Your Company Inc.No leading © symbol — Apple adds it. |
The one field you can change freely
Promotional Text (170 characters) is the only marketing copy you can update without shipping a new build or waiting for another review. Everything else in this table is locked to a version.
What blocks a submission
Your binary can be perfect and your screenshots pixel-exact, and you will still be stuck in Prepare for Submission until these three are done. None of them are code.
Pricing and Availability
Pick a base country and a price tier — including $0.00 for free. Apple derives every other country's price from your base using tax and FX, and you can override any single region.
Why it blocks you: Until a price exists, the version cannot go to review. Pricing takes effect the moment the app becomes Ready for Sale.
- 01Choose your base country or region (e.g. United States (USD)).
- 02Choose a price tier from the list — $0.00, $0.99, $1.99 and up.
- 03Review the auto-generated prices for all 174 other regions.
- 04Confirm. You can edit any individual region afterwards.
- 05Set a Tax Category — for most apps this is 'App Store software'.
App Availability
Decide where the app can be bought or downloaded: all 175 countries and regions, a specific subset, or a pre-order in selected regions.
Why it blocks you: A blank availability selection is a submission blocker. Pre-order also changes your release mechanics, so choose deliberately.
- 01All Countries or Regions — the default, all 175.
- 02Specific Countries or Regions — pick a subset, useful when you have licensing or language limits.
- 03Publish as Pre-Order — the product page goes live before the app does, and orders download automatically on release day.
App Privacy
A Privacy Policy URL for each localisation, plus the privacy questionnaire describing every category of data you collect and whether it is linked to identity or used for tracking.
Why it blocks you: Apple will not accept a submission without it, and the answers become the 'App Privacy' card on your product page. Getting it wrong is a common rejection and a bad look once published.
- 01Host a real privacy policy at a stable URL.
- 02Add the URL under App Privacy for every language you ship.
- 03Answer the data-collection questionnaire honestly — including data your SDKs collect, not just your own code.
- 04Declare tracking if you use IDFA or share data with brokers.
TestFlight, OTA, and which website is which
TestFlight vs over-the-air updates
Both put new code on a device without an App Store release, but they move completely different things. TestFlight ships a binary. An OTA update ships your JavaScript bundle.
| Feature | TestFlight | OTA update (EAS Update / CodePush) |
|---|---|---|
| What it ships | A full native build (.ipa) | JS bundle and assets only |
| Needs a new build | Yes, every time | No — that is the entire point |
| Apple review | First external build is reviewed | None |
| Time to testers | Minutes to hours, plus processing | Seconds |
| Audience | 100 internal, 10,000 external testers | Anyone already running the app |
| Can change native code | Yes | No — native changes require a build |
| Expiry | Builds expire after 90 days | Persists until replaced |
In practice: Use TestFlight when native code, permissions or dependencies changed. Use an OTA update for JS-only fixes and copy changes. Apple allows OTA under guideline 3.3.2 provided you do not materially change what the app does.
App Store Connect vs the Apple Developer site
Two different websites, two different jobs, and the login is the same — which is exactly why people look for things in the wrong one.
| Feature | App Store Connect | Apple Developer |
|---|---|---|
| URL | appstoreconnect.apple.com | developer.apple.com/account |
| Think of it as | Your storefront and release console | Your account and identity vault |
| App records and metadata | Yes | No |
| Screenshots and previews | Yes | No |
| Pricing and availability | Yes | No |
| TestFlight and review | Yes | No |
| Certificates and keys | No | Yes |
| Bundle IDs and capabilities | No | Yes |
| Provisioning profiles and devices | No | Yes |
| The $99/year membership | No | Yes |
| Sales, payouts and analytics | Yes | No |
In practice: Signing or identifier problem? Apple Developer. Anything about the listing, the build or the release? App Store Connect.
Copy generation
Headlines are written by Claude Fable 5 (claude-fable-5) from a description of what is on each screen. The model is instructed to:
- Never invent a feature that is not visible in the capture.
- Keep headlines under 38 characters and state a benefit, not a screen name.
- Name one concrete, visible detail in the subline.
- Wrap exactly one phrase in *asterisks*, which renders in your accent colour.
Without an ANTHROPIC_API_KEY, the API falls back to deterministic copy so the demo never fails on a fresh clone.
Known traps
Capture chrome
Screenshots taken while recording carry a coloured pill, a live-activity timer, a real wall clock, a drained battery, and sometimes a green active-call indicator. An opaque black band covers that region and a clean 9:41 with full signal and battery is drawn on top. A translucent band blends with the pill instead of hiding it.
Replaced captures, stale copy
If you replace a capture but keep its filename, copy attached by filename silently describes the old screen. Nothing detects it — the render still succeeds. Always re-read the grid after changing captures.
Mixed platforms
iPhone is ~2.17:1 and iPad is ~1.33:1. Compositing one into the other distorts the UI, so iPad needs its own layout and its own project rather than another canvas on an iPhone set.
API
Copy generation is exposed directly. Team plans get export endpoints for CI.
POST /api/generate-copy
{
"appName": "Stock Picks",
"screen": "Order filled confirmation, BUY 1 SPY @ $747.03",
"category": "fintech"
}
→ { "headline": "Orders fill *instantly*",
"sub": "Confirmed at the ask, at the price you were shown",
"source": "claude-fable-5" }Pass screens: string[] instead of screen to generate a whole set in one call — cheaper, and the copy varies more across the set.
FAQ
Do my screenshots get uploaded?
Not in the studio. Captures are read locally with an object URL. Files are only sent when you export.
Can I use my own device frame?
Five bezel finishes ship today. Custom frames are on the Team roadmap.
Does it do iPad?
Yes, as a separate project type — iPad needs a different layout because its aspect ratio is nowhere near a phone's.
What about App Store video previews?
Not yet. Screenshots first.