fastlane-plugin-appstore_precheck

License: MIT

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