Clearance — App Store Pre-Flight
Catch App Store rejection causes before you submit — right inside VS Code.
Clearance scans your Expo or React Native project and flags the mechanical issues that get iOS apps rejected. Fix them in minutes, not weeks.
Features
🔍 Instant project scan
Run Clearance: App Store Pre-Flight: Scan Project from the Command Palette (Ctrl+Shift+P). Clearance reads your app.json, Info.plist, and PrivacyInfo.xcprivacy and reports every issue it finds.
🤖 GitHub Copilot integration
Type @clearance in GitHub Copilot Chat and get your scan results plus AI-generated, copy-pasteable JSON fixes tailored to your actual app — not generic advice.
@clearance scan my app
📋 Results panel
A dedicated results panel shows:
- Readiness score — a percentage showing how many checks your app passes
- Blocking errors — things Apple will auto-reject for
- Warnings — things that are likely to cause issues
- Policy checklist — manual items you need to verify before submitting
🔴 Inline squiggles
Problems appear as red/yellow squiggles directly in your app.json, just like compiler errors.
↗ Jump to issue
Every finding with a known location has an Open in editor button that jumps your cursor to the exact line.
📊 Live status bar
The bottom status bar shows your current scan status at a glance — Clearance: 3 errors, Clearance: Ready, etc. Click it to rescan.
What it checks
| Check |
What it catches |
| Bundle identifier |
Missing, invalid format, or placeholder values like com.example.* |
| Version & build number |
Wrong format, missing fields |
| iOS deployment target |
Below Apple's current minimum (iOS 16) |
| Permission usage descriptions |
Missing NSCameraUsageDescription, NSLocationWhenInUseUsageDescription, NSUserTrackingUsageDescription (ATT), and 15 more — triggered by plugins, dependencies, or the permission APIs your code actually calls. Also flags strings too vague for Guideline 5.1.1(ii) |
| App Transport Security |
NSAllowsArbitraryLoads: true, plain http:// URLs |
| Privacy manifest |
Missing or malformed PrivacyInfo.xcprivacy |
| Encryption declaration |
Missing ITSAppUsesNonExemptEncryption |
| Placeholder values |
Default app names, localhost URLs, TODO markers |
| App icon |
Not configured, missing on disk, wrong size, alpha channel, or a likely template placeholder (Guideline 2.3.8) |
| Payment SDKs |
Stripe & friends linking PassKit into your binary with no Apple Pay flow (Guideline 2.1), and digital goods sold outside In-App Purchase (Guideline 3.1.1) |
| Account deletion |
Apps that create accounts with no deletion path — including a delete function that exists but is never wired to any UI (Guideline 5.1.1(v)) |
| Unlock codes |
Hardcoded promo/test codes that grant paid or Pro features outside IAP (Guideline 3.1.1) |
Plus a Policy Checklist of 10 manual items that can't be automated — app completeness, support URL, privacy policy, demo account, and more.
Requirements
- VS Code 1.90 or later
- Expo or React Native project with an
app.json
- GitHub Copilot (optional — required for the
@clearance chat feature)
How to use
Command Palette
- Open your Expo/React Native project in VS Code
- Press
Ctrl+Shift+P (or Cmd+Shift+P on Mac)
- Type
Clearance and select App Store Pre-Flight: Scan Project
Copilot Chat
- Open Copilot Chat (
Ctrl+Alt+I)
- Type
@clearance followed by your message
- Clearance scans your project and streams back results with specific fixes
Release Notes
0.1.3
Three new checks for the content-and-behaviour rejections that config files alone can't reveal: payment SDKs linking PassKit with no Apple Pay flow (2.1) and digital goods sold outside IAP (3.1.1), account deletion missing or wired to nothing (5.1.1(v)), and hardcoded unlock codes granting paid features (3.1.1). Permission usage descriptions now trigger on dependencies and on the permission APIs your code actually calls — not just expo.plugins — and are checked for vagueness against 5.1.1(ii). App icons are inspected at the PNG level for size, alpha channel, and likely placeholder artwork (2.3.8).
0.1.2
Every finding now links to the official Apple documentation that states the requirement.
0.1.1
Renamed display title to "Clearance: App Store Pre-Flight".
0.1.0
Initial public release. 9 mechanical checks, GitHub Copilot chat integration, live status bar, inline diagnostics, and readiness score panel.
See CHANGELOG.md for the full history.