> ## Documentation Index
> Fetch the complete documentation index at: https://hercules.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Play and App Store Requirements

> What Google Play and the App Store check before your app goes live: closed testing, privacy forms, demo accounts, account deletion, payments, and ads.

Google Play and Apple review your app and its store listing before it goes live. Most rejections come from a missing form, a reviewer who cannot sign in, or payments the store does not allow. Check the list for your store before you submit.

### What does Google Play need before the first release?

Complete each item in the [Play Console](https://play.google.com/console). Google does not publish your app until every one is done.

| Item | Where in the Play Console | What to know |
| - | - | - |
| Privacy policy | **Policy and programs** → **App content** → **Privacy policy** | Every app needs one. Link it in the Play Console and inside your app |
| Data safety | **App content** → **Data safety** | Required even if your app collects no data |
| Content ratings | **App content** → **Content ratings** | Answer the rating questionnaire |
| Target audience | **App content** → **Target audience and content** | Choose the age groups your app is for |
| Ads | **App content** → **Ads** | Say whether your app shows ads |
| Sign-in details | **App content** → **Sign-in details** | If any part of your app needs sign-in, give reviewers a working account. See [demo accounts](#how-do-i-give-reviewers-a-demo-account) |
| Account deletion | **App content** → **Data safety** | If people can create an account, add a way to delete it in the app and a web page to request it. See [account deletion](#how-do-i-let-people-delete-their-account) |
| Store listing | **Main store listing** | App name (up to 30 characters), short description (80), full description (4,000), contact email, app icon, feature graphic, and screenshots |

Hercules does not fill in the Play store listing today. Prepare these images:

| Image | Size | Format |
| - | - | - |
| App icon | 512x512px, up to 1 MB | 32-bit PNG |
| Feature graphic | 1024x500px | JPEG or 24-bit PNG (no transparency) |
| Screenshots | At least 2. Each side 320 to 3,840px, and the long side at most twice the short side | JPEG or 24-bit PNG (no transparency) |

No privacy policy yet? Ask Hercules:

```text Add a privacy policy page wrap theme={}
Add a privacy policy page at /privacy that describes the data my app collects and how users can ask to delete it. Link to it from the footer and the settings screen.
```

### Do I need 12 testers before my app goes live on Google Play?

Only if your Google Play developer account is a personal account created after November 13, 2023. Google then requires a closed test before you can publish to production. Organization accounts skip this step.

**1. Create a Closed Test**

In the Play Console, open **Testing** → **Closed testing**, create a track, and add the release
Hercules built. Promote it from internal testing, or upload the `.aab` file.

**2. Invite at Least 12 Testers**

Add your testers' email addresses or a Google Group, then send them the opt-in link. Each tester
accepts the invite from that link.

**3. Wait 14 Days**

At least 12 testers must stay opted in for 14 days in a row.

**4. Apply for Production**

Open the **Dashboard** in the Play Console, click **Apply for production**, and answer the
questions about your test, your app, and its readiness. Google usually answers within 7 days. It
may ask you to keep testing first.

Only a closed test counts. Internal testing, where Hercules uploads your builds, does not. See [App testing requirements for new personal developer accounts](https://support.google.com/googleplay/android-developer/answer/14151465).

### What does the App Store need before the first submission?

Fill in the store listing in Hercules (**Fill in the listing** or **Edit listing** on the **iOS** tab). Hercules sends it to App Store Connect with every submission.

| Item | Where | What to know |
| - | - | - |
| **Description** and **Keywords** | Store listing in Hercules | Apple requires keywords. Separate them with commas |
| **Copyright** | Store listing in Hercules | Apple requires it, such as `2026 Your Company` |
| **Support URL** and **Privacy policy URL** | Store listing in Hercules | Both must open real pages. Link the privacy policy inside your app too |
| Screenshots | Store listing in Hercules | Show the app in use, not only the sign-in or splash screen |
| Age rating | Store listing in Hercules | Answer for what your app really contains, such as chat or user posts |
| App Review contact and demo account | Store listing in Hercules → **App Review** | See [demo accounts](#how-do-i-give-reviewers-a-demo-account) |
| App Privacy | App Store Connect → **App Privacy** | Answer once before the first submission. Apple does not let Hercules fill it in |
| **What's new in this version** | Store listing in Hercules | Not used on the first version. Apple requires it for every update |

### Which App Review guidelines do Hercules apps often miss?

Apple reviews every version against its [App Review Guidelines](https://developer.apple.com/app-store/review/guidelines/). These are the ones to check first:

| Guideline | What Apple checks | What to do |
| - | - | - |
| 2.1 App Completeness | The reviewer can sign in and use every feature | Give a [demo account](#how-do-i-give-reviewers-a-demo-account) that signs in with a password |
| 3.1.1 In-App Purchase | Digital content and subscriptions are sold with Apple's in-app purchase | See [selling in your store app](#can-i-sell-things-in-my-store-app) |
| 4.2 Minimum Functionality | The app offers more than a repackaged website | Make it feel like an app: [turn on push notifications](/docs/apps/push-notifications.md#send-notifications-to-your-ios-app) and use app-style navigation |
| 4.8 Login Services | An app that offers Google, Microsoft, Facebook, or LinkedIn sign-in also offers an equivalent private option | Keep **Apple** on under **Users & Access** → **Auth Portal**. Sign in with Apple shares only name and email, and lets people hide their email |
| 5.1.1(i) Privacy Policies | A privacy policy link in App Store Connect and inside the app | Add a privacy page and link it from the app |
| 5.1.1(v) Account Sign-In | People who can create an account can delete it inside the app | See [account deletion](#how-do-i-let-people-delete-their-account) |

### How do I give reviewers a demo account?

If your app needs sign-in, reviewers at both stores sign in with only the account you give them. A reviewer cannot read a code sent to your email inbox or phone, so an app that only offers email code or social sign-in blocks them.

1. Go to **Users & Access** → **Auth Portal**, turn on **Email and password** (or **Username and password**), and save
2. Create the reviewer account. Sign up in your app with an email address you control and verify it. For a username account, open **Users & Access** → **Users** and click **Create User**
3. Install your store build (TestFlight or Google Play internal testing) and sign in with the account, the way the reviewer will. Check that you get through every step, including the human check on the sign-in page, with only the username and password
4. Enter the account:
   * **App Store:** in the store listing under **App Review**, turn on **The reviewer needs an account to sign in**, then fill in **Demo account name** and **Demo account password**
   * **Google Play:** in the Play Console, open **Policy and programs** → **App content** → **Sign-in details**

Keep the account and its password unchanged until review is done. If some features need a role or a paid plan, give the account that access and say so in **Notes for the reviewer**.

### How do I let people delete their account?

If people can create an account in your app, both stores require a way to delete it. Deactivating or hiding an account does not count.

* **App Store** (Guideline 5.1.1(v)): people must be able to start deleting their account inside the app. If a web page finishes the process, link straight to it
* **Google Play:** an in-app path to delete the account and its data (a link to a web page counts), and a web link where people can request deletion. Enter that link in the **Data safety** form

Hercules Auth has no **Delete account** button for your users today, and your app cannot delete a sign-in account by itself. Deleting only the person's data is not enough: they could still sign in. So the in-app option deletes their data at once and sends you a request to delete their sign-in account. Ask Hercules to add it to your app:

```text Add account deletion wrap theme={}
Add a Delete account option to the account settings screen. Ask the user to confirm, then delete all of their data, save an account deletion request with their user ID, email, and the date, email me about the request, and sign them out. Tell the user that their data is deleted and that their sign-in account will be removed within 7 days. Also add a public page at /delete-account that explains how to request account deletion.
```

Then finish each request within the time the app promises: open **Users & Access** → **Users**, open the user's menu, click **Remove**, then **Remove user**. This deletes their sign-in account and signs them out everywhere. The request is not done until you remove the user, so check for new requests often.

### Can I sell things in my store app?

Each store decides how you take payments inside its app:

| What you sell | iPhone app (App Store) | Android app (Google Play) |
| - | - | - |
| Digital content, premium features, or subscriptions used in the app | Apple in-app purchase | Google Play's billing system |
| Physical goods, or services used outside the app (deliveries, bookings, events) | Hercules Commerce. In-app purchase is not allowed | Hercules Commerce. Google Play's billing is not allowed |

Hercules builds do not include StoreKit (Apple's in-app purchase system) or Google Play Billing today. So today you cannot sell digital content or subscriptions inside your store app. You can:

* **Sell physical goods and real-world services** with [Hercules Commerce](/docs/apps/commerce/get-started.md), in the store app and on the web
* **Sell digital items on your website only.** Hide checkout in the store app and keep it on the web. The store app adds `HerculesNative` to its user agent (the text a browser sends to identify itself), so your app can tell where it runs. Ask Hercules:

```text Hide checkout in the store app wrap theme={}
When the app runs inside the store app (the user agent contains HerculesNative), hide every checkout, upgrade, and pricing button, and any link to them. Keep them on the website.
```

Each store also decides whether people can unlock, in the app, what they bought on your website:

* **Google Play** allows a consumption-only app: people sign in and use what they bought elsewhere, as long as nothing can be bought in the app
* **Apple** allows it only in the cases in Guideline 3.1.3, such as reader apps (magazines, books, music, video) and free companion apps for a paid web service

Some regions allow other payment systems or links to your website, such as the United States storefront on the App Store. Hercules does not set these up. Read the official rules:

* [Apple App Review Guidelines: In-App Purchase](https://developer.apple.com/app-store/review/guidelines/#in-app-purchase)
* [Google Play Payments policy](https://support.google.com/googleplay/android-developer/answer/9858738)
* [Understanding Google Play's Payments policy](https://support.google.com/googleplay/android-developer/answer/10281818)
* [Google Play billing and link-out programs for users in the US](https://support.google.com/googleplay/android-developer/topic/16787812)
* [Google Play billing alternatives in the EEA](https://support.google.com/googleplay/android-developer/answer/12348241)

### Can I show ads in my store app?

* **AdSense:** Google allows AdSense ads inside an app only through the WebView API for Ads (part of the Google Mobile Ads SDK), Chrome Custom Tabs, or a Trusted Web Activity. Hercules builds show your app in a web view without that SDK, so AdSense ads are not allowed in your store app today. See [AdSense in apps](https://support.google.com/adsense/answer/48182)
* **AdMob:** AdMob needs the Google Mobile Ads SDK, a native library. Hercules builds do not include it today

Keep AdSense on your website and hide it in the store app. Ask Hercules:

```text Hide ads in the store app wrap theme={}
When the app runs inside the store app (the user agent contains HerculesNative), do not load AdSense or show any ad slots.
```

Then answer **No** under **Ads** in the Play Console, unless your app shows other ads.

### Additional FAQ

> **Why does my app need my own developer accounts?**
>
> Apple rejects apps that an app generation service submits for its customers, unless the owner of the content submits them (Guideline 4.2.6). Hercules submits with your own Apple Developer and Google Play accounts, so you are the publisher on both stores.

> **How long does review take?**
>
> * **Google Play:** Google says review can take up to 7 days, or longer in exceptional cases. Applying for production after a closed test usually takes 7 days or less
> * **App Store:** usually 1 to 3 days
>
> First submissions may take longer.

> **Where do I read why Apple rejected my app?**
>
> Hercules shows that App Review rejected the version. Apple's full reason is in App Store Connect. Fix what it names in Hercules, in App Store Connect, or in your app, then submit again.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.