ShipCheck reads your actual Xcode project and your actual App Store Connect data — then tells you exactly what will bounce your submission, before you find out from Apple.
No dashboards to configure, no data to upload anywhere. Open a project, and every screen below is populated from your real code and your real App Store Connect account.
LauncherEvery project you've audited before, one click away — reopen any of them without re-entering credentials.
Not a linter. ShipCheck cross-references your code against the live state of your App Store Connect record, so it catches drift — the mismatch that crept in six builds ago, not just typos.
Diffs the product IDs in your .storekit config and source code against what's actually registered in App Store Connect — the mismatch that causes a silent purchase failure in production.
Scans your code and every bundled third-party framework for Apple's Required Reason APIs, checks them against PrivacyInfo.xcprivacy, and drafts a reason code for anything undeclared.
Name, subtitle, keywords, description, screenshots, support URL, copyright, demo account, review notes — pulled live from App Store Connect and checked before a reviewer ever opens your build.
Compares content signals actually detected in your project against your declared App Store Connect age rating answers.
Export Compliance, missing permission usage strings, App Tracking Transparency, Sign in with Apple requirements, and Background Modes consistency — the declarations easy to get wrong precisely because you got them right last time.
Runs entirely on your Mac. There is no ShipCheck server. Every App Store Connect call goes straight from your machine to Apple, signed with a request token ShipCheck generates locally. AI features are optional and bring your own key — off by default.
ShipCheck needs three things from Apple to read your app's real data. Here's exactly where to find them.
In App Store Connect, go to Users and Access → Integrations → App Store Connect API.
Click Generate API Key, give it a name, and grant it Developer or App Manager access — either is enough for everything ShipCheck reads.
Both appear right on that page next to your new key, e.g. Key ID: 2X9R7B4K3P and Issuer ID: 69a6de….
Apple only lets you download this once. Save it somewhere you won't lose it before you navigate away from the page.
Open ShipCheck → Settings → App Store Connect, enter the Key ID and Issuer ID, and choose the .p8 file.
Why does ShipCheck need this? Apple's App Store Connect API requires every request to carry a signed token proving it's really you. ShipCheck builds and signs that token locally, on your Mac, using the key you just downloaded — the file itself is stored in your Keychain and never transmitted anywhere except directly to Apple.
$0 — during the public beta
After the beta, new installs get one project with full App Store Connect integration for free, then $29.99/yr or $89.99 once for unlimited projects. Local-only checks (Privacy Manifest, declarations, IAP against your local .storekit) always stay free, on every project, no account needed.
Every bug report and feature request is read directly by the person building this — no support tickets, no forms. Tell me what ShipCheck missed, or what it should check next.