Store Operations Best Practices
A condensed summary of the 25 most important store operations habits drawn from every page in this section - for teams shipping Expo SDK 57 apps through App Store Connect and Google Play Console.
Search across all documentation pages
A condensed summary of the 25 most important store operations habits drawn from every page in this section - for teams shipping Expo SDK 57 apps through App Store Connect and Google Play Console.
Treat store ops as a pipeline: Build → internal test → submit → phased release → monitor - not a Friday afternoon task after feature freeze.
Increment buildNumber and versionCode every upload: Stores reject duplicates; hotfixes on the same marketing version still need new integers.
Tag git commits that produced store binaries: Incidents trace to source; eas build:list alone is not enough for audits.
Run npx expo-doctor on release branches: SDK drift causes upload failures and native crashes reviewers see before you do.
Smoke-test Release builds on physical devices: Simulators hide push, biometrics, IAP, ATT, and performance - Guideline 2.1 lives on real hardware.
Use TestFlight internal before App Review: Same IPA as production; catches signing, entitlements, and privacy manifest issues cheaply.
Use Play internal track before production: Minutes-to-hours feedback; validates Data safety and versionCode monotonicity.
Automate upload with EAS Submit: Humans choose release timing; machines avoid Transporter typos and wrong IPA selection.
Keep metadata in git: store/metadata.ts and locale folders - Connect and Play copy paste from one source of truth.
Automate screenshot pipelines per locale: Fastlane Snapshot, Detox, or Maestro - stale screenshots trigger 2.3.3 rejections.
Maintain review notes with working demo credentials: Rotate passwords every release; expired accounts cause false rejections.
Align App Privacy, Nutrition Labels, and Play Data safety: One privacy inventory spreadsheet drives all three - see Compliance: ATT & Privacy Labels.
Request ATT only when you truly track across other companies' apps: False tracking declarations are Guideline 5.1.2 strikes; non-personalized ads when denied.
Match permission strings and manifest entries to runtime behavior: iOS infoPlist descriptions and Android blockedPermissions - see Permissions & Play Policy.
Rebuild native for privacy manifest and ATT changes: OTA cannot fix ITMS-91053 or missing NSUserTrackingUsageDescription.
Default iOS phased release and Android staged rollout to ON: Start Play at 5–10%; plan marketing around 7-day iOS curve.
Monitor crash rate by build number during partial rollout: Sentry and Play vitals sliced on versionCode - aggregate app stats hide regressions.
Document who can pause phased release and halt Play rollout: Vacation gaps delay containment - name primary and backup in runbook.
Know rollback limits: Stores are forward-only; you ship fixes, not downgrades - Phased Release & Rollback.
Classify rejections by Guideline or policy topic: Emotional replies waste cycles - use Store Rejection Playbook templates.
Attach evidence to Resolution Center replies: Screen recordings, test accounts, and manifest excerpts beat "we cannot reproduce."
Escalate after two evidence-based round-trips: Not after first denial - Apple App Review Board and Play appeals need facts.
Reserve expedited review for measurable user harm: Revenue promises alone burn credibility - App Store Connect Workflow.
Run incident command for delisting and SEV1 crashes: IC, scribe, comms, legal - not parallel Slack threads - Store Incident Response.
Postmortem every SEV1/SEV2 store incident: Update playbook, privacy inventory, and release checklist within five business days.
Stack versions: This page was written for React 19.2.3, React Native 0.86.0, and Expo SDK 57 (
expo~57.0.4).
Reviewed by Chris St. John·Last updated Jul 10, 2026