iOS App Store Preflight Scanner
Know before
you submit
Scan your iOS project for App Store rejection risks. Catches privacy manifests, entitlements, Info.plist issues, and more.
npm install -g shiplint
Free and open source. Works with Xcode projects and Swift packages.
What ShipLint Checks
10 rules targeting the most common App Store rejection causes
Privacy Manifests
Required API declarations for iOS 17+
Entitlements
Validates capabilities match provisioning
Info.plist
Required keys, formats, and values
Usage Descriptions
Camera, location, photos, etc. strings
ATS Exceptions
App Transport Security audit
Sign in with Apple
SIWA compliance with third-party auth
URL Schemes
Deep link and custom scheme setup
Build Settings
Deployment target, architectures
SDK Signatures
Detects SDKs requiring declarations
Asset Validation
App icons, launch screens
How It Works
Three commands. That's it.
Install
Run
Fix issues before submitting
ShipLint outputs clear, actionable messages. Fix what's flagged, then ship with confidence.
Output Formats
--format text
--format json
--format sarif
For AI Coding Agents
Structured output for automated workflows. Parse, integrate, ship.
name: ShipLint
on: [push, pull_request]
jobs:
lint:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- run: npm install -g shiplint
- run: shiplint scan . --format sarif > results.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
{
"version": "1.0.0",
"project": "MyApp.xcodeproj",
"summary": {
"errors": 2,
"warnings": 1,
"passed": 7
},
"issues": [
{
"rule": "privacy-manifest",
"severity": "error",
"message": "...",
"file": "Info.plist",
"fix": "..."
}
]
}
Agent Integration Tips
-
→
Use
--format jsonfor parsing - → Check exit code before parsing output
-
→
Each issue includes a
fixfield with remediation - → SARIF format for GitHub code scanning
- → Run in CI to catch issues before merge
Stop guessing. Start shipping.
Catch rejection risks before Apple does.
npm install -g shiplint