Non-public API reference (ITMS-90338)
Check PB-37 · App Store Review Guideline 2.5.1 · Likely rejection when present · verified 2026-09-16
Why App Review rejects under Guideline 2.5.1
This one is decided by Apple's automated scan at upload time, before a human sees the build. Private selectors (LSApplicationWorkspace, MobileGestalt, IOKit queries), the long-deprecated UIWebView, and disabled App Transport Security without justification all trip it. The symbol almost always comes from a dependency rather than your own code, so the fix is finding which pod or package contains the string and updating or replacing it.
How to fix it
Find which dependency pulls the symbol in (grep your Pods/ node_modules/ for the name in the evidence) and update or replace it. Apple's upload check rejects the binary before a human reviewer sees it, so this blocks submission entirely. Common culprits: old analytics/ad SDKs querying IOKit or MobileGestalt, and 'device info' libraries enumerating installed apps.
How RejectProof detects it
The scan reads your .ipa in the browser (or locally with npx rejectproof): Info.plist, entitlements, the privacy manifest, embedded frameworks and the executable itself. Check PB-37 reports the exact evidence it found — the key, the symbol, the file or the URL — so you can confirm it in your own project before changing anything. Nothing is uploaded; only a small redacted summary is sent to build the report, and you see it first.