fastlane-plugin-appstore_precheck
Run appstore-precheck — a read-only iOS
App Store pre-submission scan over 42 common rejection vectors — as a fastlane lane gate.
GREEN passes, RED fails the lane before you waste an upload and a review cycle.
Getting started
fastlane add_plugin appstore_precheck
The plugin shells out to the appstore-precheck scanner. Install it once:
brew install berkayturk/tap/appstore-precheck # or: npm i -g appstore-precheck
No install needed if npx is on PATH — the plugin falls back to npx --yes appstore-precheck.
Usage
lane :beta do
appstore_precheck # fails the lane on a RED verdict
build_app
upload_to_testflight
end
Options:
appstore_precheck(
dir: '.', # directory to scan (default: current directory)
fail_on: 'YELLOW', # gate at RED (default) or YELLOW
fail_build: true, # false: warn instead of raising, return the verdict
cli_path: '/opt/homebrew/bin/appstore-precheck' # explicit binary (optional)
)
The action returns the verdict as a String, so you can route it:
verdict = appstore_precheck(fail_build: false)
slack(message: "Precheck verdict: #{verdict}") unless verdict == 'GREEN'
What it checks
42 static rejection vectors: Restore Purchases / Terms / Privacy on the paywall (3.1.2), tracking SDKs without ATT (5.1.2), purpose strings (5.1.1), privacy-manifest ↔ Required Reason API parity, account deletion (5.1.1(v)), metadata placeholders and length limits (2.1 / 2.3.1), export compliance, and more. Full list and methodology: berkayturk/appstore-precheck.
The scan is read-only, needs no credentials and no network, and never edits your files.
Exit-code contract: 0 ok, 1 gate hit, 64 bad usage, 70 environment error.
Run tests for this plugin
ruby test/runner_test.rb # dependency-free unit tests for the core logic
bundle install && bundle exec rspec # full action specs (needs fastlane)
Issues and feedback
For scanner findings (false positives, missing checks) file issues on the main repo. For plugin/action problems, use this repo's issues.
Using fastlane Plugins
For more information about how the fastlane plugin system works, check out the Plugins documentation.
License
MIT © Berkay Turk