shipcheck

Why apps get rejected

Updated September 6, 2026 · published by Baker Ventures LLC · sources cited inline

Rejections do not cost effort, they cost calendar time. The fix is minutes; the cycle is a build, an upload, a wait in review and a message that frequently does not name a file. The rejections worth engineering against are the deterministic ones — privacy manifests, permission strings, background modes, account deletion — because those live in files and a machine can find them before you build.

The one sentence that explains most React Native rejections

Apple's privacy-manifest rule is per-bundle: "For each executable or dynamic library in an app that uses a required reason API, the bundle that includes the executable or dynamic library needs to include a privacy manifest file that reports the API."

Your app's manifest does not cover your dependencies, and in a React Native project you did not choose most of your dependencies — nanopb arrives under gRPC, which arrives under Firebase, and hermes is simply the default JavaScript engine. All three are on Apple's required-SDK list. Which of yours are.

Cite this pageshipcheck. “Why apps get rejected.” Baker Ventures LLC, September 6, 2026. https://shipcheck.bakerventuresstudio.com/why/