shipcheck
MEASURED COMPARISON

ShipCheck vs. the free Claude Code checkers

There are at least six free tools in the same install surface as ShipCheck, and the strongest of them -- greenlight, from RevylAI -- has 2.4k stars and does more than ShipCheck in one specific area. This page is the actual data, not a marketing claim: both tools were run against the same real Expo app and the same seeded-violation fixture, and every finding below is what each one actually reported.

Read this first An earlier version of our own go-to-market research assumed the free competition was thin -- "two free Claude-Code-native competitors." It wasn't. There are at least six, including one with 2.4k stars and a company behind it. We're leaving that mistake visible rather than quietly fixing the story, because the honest comparison below is a stronger pitch than the wrong one was.

What both tools catch

Target API level, foreground service types, missing app privacy manifest, Sign in with Apple, QUERY_ALL_PACKAGES, background location, export compliance. If your app only has these problems, either tool will tell you -- and greenlight is free.

What only ShipCheck catches

FindingWhy it matters
Missing NSCameraUsageDescription while the app calls launchCameraAsynciOS kills the app at the permission prompt. Guaranteed 2.1 rejection. greenlight misses it entirely.
Missing NSUserTrackingUsageDescription with a Meta SDK presentgreenlight detects the tracking SDK and prints it, but doesn't connect that to the missing key.
Expo's own default purpose strings (Allow $(PRODUCT_NAME) to…)the single most common 5.1.1 nit in Expo apps specifically.
An SDK that ships no privacy manifest of its ownITMS-91061 -- the upload is rejected before a human ever reviews it.
Account deletion (5.1.1(v)) and Restore Purchases (3.1.1)greenlight's own docs describe both rules; neither fired on a fixture that violates both. Its pattern matching doesn't reach into React Native source.
Icon with an alpha channel, or not 1024×1024blocks the upload outright.
Dead privacy-policy and support URLsgreenlight never makes the request to check.
Placeholder text, app name over 30 chars, missing demo account, keyword formattingstructural -- see below, this is the real gap.
developmentClient: true left in the production EAS profileExpo-specific; ships the dev menu into a release build.
Prominent-disclosure requirement for runtime permissionsPlay-specific, easy to miss.

The structural gap: greenlight can't read your store listing

Not "doesn't yet" -- can't, in its current shape. It reads app.json, so the most it can say is "expo.description is empty." It never sees the actual description, keywords, What's New text, screenshot descriptions, review notes, demo account, age rating, or paywall copy you're about to paste into App Store Connect, because nothing in its design ever collects them.

A whole class of rejection lives in exactly that material (guideline 2.3.x). shipcheck.metadata.md -- an unglamorous markdown file you fill in once -- is the actual moat, for three reasons: it's an input no code scanner has; judging it needs a model reading current guideline text, which offline bundled rules can't do; and in a Claude Code plugin, that model is the one you already have open, so it costs us nothing to run and costs you nothing extra to use.

Where greenlight is honestly better

Both tools also had real false positives on the same real app until dogfooding caught them -- greenlight flagged a comingSoon UI badge and a stray console.log in a build script that never ships. ShipCheck had five false-positive classes of its own until scripts/selftest.py was written specifically to guard against them. Nobody gets to be smug about this; the difference is ours are now regression-tested against a real fixture on every push.

What this actually means for pricing

Charging for what six free tools already do isn't a business. Deterministic code and config scanning is table stakes now, and it's free everywhere, including in ShipCheck's own free scan. What's still worth paying for is the half none of the free tools can reach at all: store-listing judgment against the live guideline text, the fetched-and-hashed corpus that stays current on its own, and the Resolution Center reply drafter for when a rejection has already landed.

See what ShipCheck catches that the free tools don't

Free scan on every app -- the deterministic checks are the same ones every tool in this comparison runs, on the house. The judgment layer -- your store listing, the paywall, the guideline text current as of today -- is what's actually being sold.

/plugin marketplace add BakerVentures/shipcheck

See pricing →