Find the rejection in your build before App Review does.
Explore the product ↓54 checks · Your build stays in your browser
Each finding connects an App Review guideline to what was found in the build and a concrete fix.
54 checks · Your build stays in your browser
Many preventable issues are already visible in the app build before submission.
Try a simulated scan. No file is selected or analyzed here.
Every preflight rule runs as an offline verification step before archive upload.
import Foundationimport RejectProofCorepublic struct PrivacyManifestRule: PreflightRule { public let identifier = "guideline-5.1.1" public let severity: Severity = .blocker public func evaluate(bundle: AppBundle) async throws -> RuleResult { let manifest = try await bundle.loadPrivacyManifest() guard let accessedTypes = manifest.accessedAPITypes else { return .failed(reason: "Missing NSPrivacyAccessedAPITypes declaration") } let undeclared = bundle.scannedSymbols.filter { !accessedTypes.contains($0) } return undeclared.isEmpty ? .passed : .warning(evidence: undeclared) }}No binary, certificate or source code ever leaves your machine. The entire preflight inspection runs in an isolated client-side WebAssembly sandbox.
Extracts Mach-O header & payload locally in client browser memory.
Evaluates 54 App Review rules offline with 0 network egress.
Categorizes findings into blockers, warnings and passes.
Generates guideline citations and recommended code patches.
Explore the real product at rejectproof.com.