2.5.1Apple App Store

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. 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. 2.Update or replace the SDK

    Vendors patch these quickly. Take the newest version, or drop the SDK if it is unmaintained.

  3. 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

Related rejections