Guideline 2.5.1 — Private APIs and Software Requirements
Static analysis found a symbol that belongs to a private framework. Usually it is not your code at all — it is an SDK you embed.
What the rejection usually says
Your app uses or references the following non-public API.
The use of non-public APIs is not permitted on the App Store.
Wording varies between reviewers; the substance does not.
Why it gets triggered
- An analytics, crash-reporting or ad SDK reaching into private frameworks.
- Code copied from a sample that calls an undocumented selector.
- A symbol name that merely collides with a private one and trips detection.
How to fix it
1.Search the binary for the symbol they named
Apple quotes the exact symbol. Grep your source, then your dependencies — the culprit is usually a dependency.
2.Update or replace the SDK
Vendors patch these quickly. Take the newest version, or drop the SDK if it is unmaintained.
3.Rename when it is a false positive
If the symbol is genuinely yours and merely collides, rename it and explain the collision in your reply.
A reply you can adapt
Short, specific, and stating what changed — reviewers read hundreds of these.
Thank you for the detail. The symbol came from a third-party SDK, which we have updated to a version that no longer references it. We verified the new binary contains no reference to the API named.
AppSubmit does this for your app, specifically
Paste the rejection and the decoder reads it against your actual listing, build and release history — then writes the fix plan and drafts the reply. It also watches your submissions, so the next rejection reaches you as a notification rather than a surprise.
Decode a rejection free