Skip to content

How iOS builds work

On a plan that includes iOS builds, one Build press builds Android and, when your app meets every iOS requirement, iOS too. Both count as one build against your monthly allowance.

There is no platform to choose. You press Build once, and the iPhone half either builds or tells you what is missing — see Getting ready for iOS builds for the requirements and how to clear them.

Your appResult
On a plan without iOS buildsAndroid builds. Nothing asks you about iOS.
iOS requirements not metAndroid builds. The iOS setup window opens at the first thing to fix.
Every iOS requirement metAndroid and iOS both build, as one build against your allowance.

Requirements are re-checked on every press, against your site as it is at that moment. A certificate that expired since your last build fails the check on the next one.

Apple will not install a build that is not signed by a certificate belonging to a real Apple Developer account. That account is yours, so the signing files are yours, and they stay on your own site.

  1. Your certificate and provisioning profile sit on your WordPress site under Memberside → API Keys → iOS signing.

  2. When a build server picks up your build, it asks your site for them once, over a signed request that expires after two minutes and cannot be replayed.

  3. The files are imported into a throwaway keychain that exists only for that build.

  4. When the build ends — successfully or not — the keychain and the files are deleted from the build server.

Memberside never stores your certificate, your password or your profile. Each build fetches them again, and a released request cannot be claimed a second time.

A successful iOS build puts an IPA on the build row, next to the Android .apk and .aab. It is a real signed build of your app, ready for the App Store.

Each iOS build also gets its own build number, counting up from one. Apple refuses a second upload that reuses a build number, so this is handled for you and is not something to set in the builder.

If you have added an App Store Connect key to your site, the build server sends each finished build straight to TestFlight, and the build row shows In TestFlight, linking to App Store Connect.

The key is optional. Without it the build still succeeds and you upload the IPA yourself with Apple’s Transporter app. If Apple rejects the upload, the build is still a success and the row reads “TestFlight refused it; upload the IPA with Transporter” — the build is sound, the delivery is not, and Transporter reports Apple’s reason.

Every build waits in TestFlight at Missing Compliance until your app answers Apple’s export-compliance question. Answering it once in the iOS setup window writes the answer into every later build, and they reach your testers without stopping. See Export compliance.

A build from the pipeline is a production build, so it gets production device tokens and the generated project is already set up for them. Leave Apple sandbox switched off in the Push panel. Sandbox applies to a build you install from Xcode yourself, and switching one without the other delivers nothing, with an error that reads like a corrupt token.

Apple distribution certificates last a year, and the iOS setup window turns amber thirty days before yours runs out. A build signed with an expired certificate fails, so renew before then.

  1. Create a new certificate in your Apple Developer account, the same way you made the first one — see Certificate.

  2. Export it as a .p12 with a password.

  3. Generate a new provisioning profile. A profile names the certificate it was built with, so the old profile does not work with the new certificate.

  4. Upload both to Memberside → API Keys → iOS signing, replacing what is there.

  5. Press Build. The step turns green on the next check.

The pipeline stops at TestFlight. Submitting for review is yours, and so is the account it is submitted from.

Apple’s App Store Review guideline 4.2.6 rejects apps created by an app-generation service and submitted by that service on a client’s behalf. Apps built from a template must be submitted by the client, under the client’s own Apple Developer account.

The practical reading of 4.2.6 is that the app must be yours: your developer account, your name on the listing, your support URL, and an app that stands on its own as a real product for a real community. An app that is a thin wrapper around a website is rejected under the same guideline, which is the argument for placing native features rather than webview screens.

  • A bundle identifier, permanent once published.
  • Signing certificates and provisioning profiles, generated in your account.
  • App Store Connect listing: name, subtitle, description, keywords, screenshots for each required device size, and a privacy policy URL.
  • App privacy answers describing what your app collects. Memberside apps read from your own WordPress site, so the answers depend on what your site stores.
  • A review account — reviewers need working credentials for a members-only app, or they will reject it as unusable.

Everything on that list except the certificates is collected, checked and exported by Store submission on your app’s page. See Preparing your store listing, which also flags the guidelines your app has actually earned: Sign in with Apple if you offer any other social login, moderation controls if members post, in-app account deletion if members can sign up.

SymptomCauseFix
Only the Android half builtAn iOS requirement is not metOpen iOS setup from the notice and clear the first red step
iOS build says it is not in your planThe account is on FreePro and Unlimited include iOS builds
The iOS row reads “Waiting for an iOS build server”Every build server is busyNothing to do; it starts when one frees up
The iOS build failed at a named stepThat step’s requirement broke since the last checkUse Fix in iOS setup on the build row, which opens at that step
The build succeeded but nothing is in TestFlightNo App Store Connect key on your siteAdd one (Upload key), or upload the IPA with Transporter
“TestFlight refused it; upload the IPA with Transporter”Apple rejected the delivery, not the buildUpload the IPA with Transporter, which reports Apple’s reason
The build sits at Missing Compliance in TestFlightExport compliance has not been answeredAnswer it in Export compliance and rebuild
The IPA download says it expiredThe build is more than thirty days oldPress Build again