Pre-submission audit for macOS & iOS apps

Stamp it cleared
before Apple stamps it rejected.

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.

Download for macOS macOS 14+ · Free during beta · No account required
Loading manifest count…
The manifest

Five things Apple checks that you'll forget you answered

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.

IAP & Subscriptions

Every product ID, cross-checked

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.

Privacy Manifest

Required Reason APIs, declared correctly

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.

App Information & Review

Everything human review looks at first

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.

Age Rating

What your code implies vs. what you declared

Compares content signals actually detected in your project against your declared App Store Connect age rating answers.

The recurring five

Export compliance, ATT, Sign in with Apple, and more

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.

100%

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.

Setup

Connect your App Store Connect account

ShipCheck needs three things from Apple to read your app's real data. Here's exactly where to find them.

Open your API keys page

In App Store Connect, go to Users and Access → Integrations → App Store Connect API.

Generate a key

Click Generate API Key, give it a name, and grant it Developer or App Manager access — either is enough for everything ShipCheck reads.

Copy the Key ID and Issuer ID

Both appear right on that page next to your new key, e.g. Key ID: 2X9R7B4K3P and Issuer ID: 69a6de….

Download the .p8 file — now

Apple only lets you download this once. Save it somewhere you won't lose it before you navigate away from the page.

Paste all three into ShipCheck

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.

Pricing

Free right now. That's not a trial.

Full access, no card

$0 — during the public beta

  • Every check, every category, unlimited projects
  • Live App Store Connect integration on your Mac, no time limit
  • If you download during the beta, this stays free for you — permanently, even after paid tiers launch

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.