Most first-time app submissions get rejected for preventable reasons: a missing privacy policy URL, an icon that is the wrong size, a metadata field left blank. Apple and Google both have specific requirements, and learning them through a rejection adds 24 to 48 hours to your timeline for each round-trip. This checklist covers everything to have in order before you submit, so your first submission lands cleanly.

Developer accounts

  • Apple Developer Program enrolled and approved — go to developer.apple.com. Enrollment requires identity verification and can take 24 to 48 hours. Do this well before your target launch date.
  • Google Play Console account registered — play.google.com/console. One-time $25 fee. Typically approved within a few hours.
  • Two-factor authentication enabled on both accounts — required by both stores. Do not skip this; submission will fail without it.
  • App Store Connect access confirmed — log into App Store Connect (appstoreconnect.apple.com) at least once to verify your account is fully set up before submission day.

App assets

  • App icon, 1024x1024 PNG, no transparency — this is the single most visible representation of your store on both stores. No rounded corners on your file — the stores apply their own masking.
  • App icon, 512x512 PNG for Google Play — Play Store uses a separate requirement. Same design, different size.
  • Feature graphic, 1024x500 PNG for Google Play — appears at the top of your Play Store listing. Use your store name, a product image, or a simple brand banner. Required for Play Store submission.
  • Screenshots for App Store: at least 3, in 6.5" and 5.5" sizes — Apple requires screenshots that match specific device dimensions. Use a simulator or real device. Minimum 3, maximum 10 per device size.
  • Screenshots for Play Store: at least 2, 16:9 ratio recommended — Google requires at least 2 screenshots. Phone screenshots at 16:9 display best in the listing.

Store listing metadata

  • App name — keep it under 30 characters. Your store or brand name, optionally with a short descriptor.
  • Subtitle (iOS only, 30 characters max) — appears under the app name in search results. Use a clear benefit statement.
  • Description (up to 4,000 characters) — describe what the app does from the shopper's perspective. Lead with the benefit: easy browsing, fast checkout, push notifications for sales and restocks. Do not keyword-stuff. Both stores now penalize description manipulation.
  • Keywords (iOS only, 100 characters) — the hidden keyword field that drives App Store search ranking. Use terms your customers would actually search. Separate with commas, no spaces.
  • Short description (Play Store, 80 characters max) — appears in search results on Android. Lead with the shopper benefit.
  • Category — Shopping is the correct primary category for a Shopify commerce app on both stores.
  • Age rating — complete the content rating questionnaire on Play Store. For a standard physical goods store, the result is "Everyone" or equivalent. Required before publication.

Legal and policy requirements

  • Privacy policy URL, publicly accessible — both Apple and Google require a link to a real privacy policy. It must describe what data you collect and how you use it. This is a hard rejection reason if missing. Your Shopify store's privacy policy page works if it covers the app's data collection.
  • Terms of service URL — technically optional but strongly recommended. Many rejection edge cases are resolved faster when terms are present.
  • Support URL or support email — required by Apple. A contact page or support email on your store's website satisfies this.
  • GDPR and CCPA disclosures if you sell to EU or California customers — both stores ask whether your app collects data. Answer honestly in the Data Safety section (Play Store) and App Privacy section (App Store). Incorrect disclosures are grounds for removal after review.

Shopify store settings

  • Storefront API enabled — most app builders need Shopify Storefront API access. Confirm it is enabled in your Shopify admin under Settings → Apps and sales channels.
  • All products published to the mobile sales channel — products hidden from the channel will not appear in the app. Do a quick audit to confirm your catalog is fully visible.
  • Checkout settings confirmed — test a real purchase flow from the app before submitting. Verify that payment methods, shipping options, and discount codes all work as expected.
  • Out-of-stock behavior configured — decide whether to show sold-out products or hide them. Either is fine, but configure it intentionally.

Final checks before submitting

  • Install and walk through the app on a real device — not just in the simulator. Real device testing catches touch target issues, image loading behavior, and checkout flows that simulators miss.
  • Test with a real purchase — complete an actual order through the app, including payment. Use a real payment method, not a test card. Verify the order appears in your Shopify admin.
  • Check all navigation paths — browse a collection, open a product, add to cart, search, view account. Make sure nothing dead-ends or crashes.
  • Review all metadata one final time — read your app description out loud. If it sounds like keyword spam, rewrite it. Apple reviewers read descriptions and reject apps with obvious manipulation.

After submission

Apple typically reviews new apps within 24 to 48 hours. Google Play typically reviews within a few hours to one business day. Both will send an email if the app is approved or if they need changes. Check your developer account email consistently during review. A rejection notice requires a response within a few days — missing the window delays your launch further.

Most first-submission rejections are metadata issues, not code issues. Having this checklist complete before you submit reduces the likelihood of a rejection to near zero for a standard commerce app.

Appolar walks through the submission requirements with you during the build process — flagging missing assets or metadata before you hit submit, not after Apple sends a rejection.