onebox

Guide 17 of 27

For your agent: .md · all guides

On this page
  1. What it costs
  2. Steps
  3. What the onebox skills automate afterwards
  4. Where the values go
  5. Check it works
  6. Common errors

App Store Connect setup (the manual parts)

Runs on: your browser (App Store Connect and your Apple Developer account).

App Store Connect (https://appstoreconnect.apple.com) is where your app’s store listing, builds, testers and sales live. Some setup can only be done in the web UI. This guide lists all of it, in the order you need it, and says which onebox skill takes over afterwards. You need it before the first TestFlight build, and before you create subscription products.

What it costs

Nothing extra. It comes with the Apple Developer Program (see apple-developer.md).

Where this guide says “the page for X”, it names the section; Apple moves buttons around, so look for that section rather than a specific button.

Steps

1. Register the bundle ID

The bundle ID (for example com.example.myapp) is permanent. Pick it now and put the same value in ios.bundleIdentifier in your app config.

Some capabilities cannot be set by EAS and must be ticked here by hand (see the pitfalls in ship-ios:expo-local-build).

2. Create the app record

The API cannot do this (POST /v1/apps answers 403).

  1. In App Store Connect, open Apps and click the add button (+), then New App.
  2. Fill in:
    • Platforms: iOS.
    • Name: the App Store name, up to 30 characters. It must be unique on the store. Your home screen name (expo.name) can be shorter.
    • Primary Language.
    • Bundle ID: pick the one from step 1.
    • SKU: any internal code you like, for example the bundle ID.
    • User Access: Full Access, unless you have a team and want to limit it.
  3. Click Create. The app appears with the status Prepare for Submission.

Copy the numeric Apple ID of the app (on the app’s App Information page). Put it in eas.json at submit.production.ios.ascAppId, so eas submit needs no prompts. It is not a secret.

3. Agreements, tax and banking (only if you sell anything)

Needed for paid apps, in-app purchases and subscriptions. Only the Account Holder can do it.

  1. Open Business at the top of App Store Connect.
  2. On the Agreements tab, find Paid Apps and click View and Agree to Terms.
  3. Add tax and banking information when asked.

Until the Paid Apps Agreement is active, products load empty in your app: the paywall shows no prices and no buy button, with no error.

4. Users and Access

5. TestFlight: internal group and testers

  1. Open your app, then the TestFlight tab.
  2. Click the add button (+) next to Internal Testing and name the group. Tick Enable automatic distribution if every new build should go to it.
  3. Open the group, click Invite Testers, select people, click Add.

Internal testers must be users on your App Store Connect team (up to 100 per group). Anyone else is an external tester: make an external group, and the first build of each version needs Beta App Review.

6. Export compliance

Each build asks whether the app uses non-exempt encryption. Answer it once for all builds in the app config: ITSAppUsesNonExemptEncryption: false under ios.infoPlist (expo-app.md, step 3). The ios.config.usesNonExemptEncryption key does the same. The ship-ios:app-store-ready skill explains the answer. Without it, each build waits as “Missing Compliance” until you answer on its page.

7. Subscriptions and in-app purchases (if paid)

In your app, open the page for Subscriptions (or In-App Purchases): create a subscription group, then products with product IDs, durations and prices. The first subscription must be submitted together with an app version. Each product needs a review screenshot of your paywall.

8. The store listing and review information

On your app’s pages in App Store Connect:

9. Submit

On the version page, click the button to add it for review, then submit. Watch for messages in App Review (on your app’s pages) and your email.

What the onebox skills automate afterwards

TaskManual or skill
Bundle ID registrationship-ios:expo-local-build (EAS does it on first build)
App recordmanual, once
Paid Apps Agreement, tax, bankingmanual, once (Account Holder)
API key, In-App Purchase keymanual, once
Build uploadship-ios:expo-local-build
Export complianceapp config (once), or ship-ios:appstore-connect per build
TestFlight groups, testers, adding buildsship-ios:appstore-connect (after you create the first group, or via add-tester)
Build status and processingship-ios:appstore-connect
Subscription group and productsship-ios:appstore-connect (subs-create); trial offers and the review screenshot stay manual
Screenshotsship-ios:app-store-screenshots
Checking you did not miss anythingship-ios:app-store-ready
App Privacy, age rating, pricing, review info, EU trader status, Submitmanual

Where the values go

Check it works

Common errors

Wrong or out of date? Fix it on GitHub.