Google Play, for React Native and Expo apps
Play fails differently from the App Store, and the difference matters. Apple's process is a human review producing a cited guideline you can reply to. Google mixes automated checks that block an upload before any human sees it with policy enforcement that can arrive after publication — and that can escalate to the developer account rather than only the app.
The practical consequence: Play problems are less about persuasion and more about accuracy. A Data safety form that does not match your SDKs is not an argument you can win; it is a statement that is wrong.
The four that catch React Native teams
Data safety that does not match the SDKs. Your declaration must cover the whole app including libraries. Firebase Analytics, Crashlytics, push providers and attribution SDKs all collect things you may never look at, and you are answerable for them. How to derive it properly.
Sensitive permissions without a declaration. ACCESS_BACKGROUND_LOCATION needs a Permissions Declaration in Play Console with a written justification and a demonstration video, and Google's expectation is that you use the least invasive option that satisfies the use case. A background-location request a foreground flow could satisfy is likely to be refused.
Account and data deletion. If your app allows account creation, Play expects a way to request account and data deletion — including a web-accessible route, not only an in-app one. This is a separate requirement from Apple's Guideline 5.1.1(v) and satisfying one does not satisfy the other.
Target API level. Annual deadline, blocks publishing, and raising it late is expensive because it opts you into that Android version's behaviour changes. Detail.
The merged manifest is where the surprises are
The AndroidManifest.xml that ships is not the one in your repository. It is the merge of yours with every library's, and it is where permissions you never declared appear.
find android -path '*intermediates*' -name 'AndroidManifest.xml' \
| head -1 | xargs grep -E 'uses-permission|foregroundServiceType'Every dangerous permission in that output needs either a Data safety row or a defensible reason it collects nothing. If you cannot account for one, that is the finding — and it is far cheaper to discover it here than in a policy notice.
shipcheck. “Google Play, for React Native and Expo apps.” Baker Ventures LLC, September 6, 2026. https://shipcheck.bakerventuresstudio.com/rejections/google-play/