Skip to main content

Publishing to the App Store

At this point, you've at least made some minor adjustments to the Lexicon Mobile App, and are ready to publish it so that your users can download it.

In this page, we'll cover the process of publishing it on iOS.


  • An Apple Developer account
  • An Expo account
  • XCode is installed on your development machine

To get started with Test Flight and publishing your app, you'll need an Apple Developer account account.

This will enable you to interact with Apple as you go through the process of submitting to Test Flight and, eventually, the App Store.

Similarly, you'll need an Expo account so you can build your app, download it, and upload it to Apple's servers.

Finally, you'll want to have already downloaded and installed Xcode, which is what you'll use to upload your built app to Apple's servers.


If you don't yet have an account, you'll need to enroll in the Apple Developer Program first. Note that there is an annual cost associated with this.

Additionally, you'll want to make sure that you have accounts

Publish to Test Flight

Test Flight is a key aspect of Apple's Developer Program, which enables developers to provide beta users with access to their app under less-strict review requirements.

With Test Flight, you're able to invite users to test and collect their feedback before releasing your app to the public on the App Store.

You can learn more about Test Flight here.

Register a new Bundle ID

Each App in the App Store has a unique Bundle Identifier, or Bundle ID.

In order to publish the app anywhere, including to Test Flight, you'll need to have a Bundle ID registered for your app with Apple.

Typically, this uses the format of com.<yourcompany>.<yourappname>.

For example, if your company is named Expo, and your app is named Expo Go, your Bundle ID could be:


You can follow these instructions to get one.

  • Go to Certificates, Identifiers & Profiles.

  • Fill in the following fields, and then click Continue

    Regsiter App
    • Description: You can insert the app name as its description.

    • Bundle ID: Select Explicit, and then insert then insert your bundle ID in the input field.

  • Capabilities

    • You can leave this section empty.

Add New App in App Store Connect


  • Sign in to your App Store Connect account.

  • Click on My Apps.

    App Connect
  • Click on the + button to add new app.

    Add New App
  • Fill out the requested information about your app, and then click Create.

    Add New App
    • Platforms: Select iOS.
    • Name : The name of your app, as it will appear on the App Store and user's devices.
    • Primary Language : The Primary language that will be used if localized app information is not available.
    • Bundle ID : Choose the Bundle ID you created above.
      • Note: double-check that it's correct, because you can not change it afterwards.
    • SKU (Stock Keeping Unit): A unique ID to differentiate your app from the others, similar to a product ID.
    • User Access Full access means all users will have access to the app, while limited access means that the app can only be accessed by certain roles defined within App Store Connect.


After creating the app in App Store Connect, you'll want to jump back over to the codebase and make some adjustments.

In particular, you'll want to open frontend/app.json and find the ios section of the file.

   "ios": {
"supportsTablet": false

Then, you'll want to add the information you just registered in App Store Connect:

   "ios": {
"supportsTablet": false,
"bundleIdentifier": "com.companyname.appname",
"buildNumber": "1.0.0",
"config": {
"usesNonExemptEncryption" : false

We set usesNonExemptEncryption to false because Lexicon doesn't leverage that feature.

For further details, please take a look at this link from Apple's documentation.

Build your App for iOS

Before publishing, you'll need to build your app by instructing Expo to generate an iOS build, like so:

$ expo build:ios

When you run the above command, Expo will prompt you for your Apple ID and password.

Expo provides documentation about this step on Building Standalone Apps.

Once the above step has completed, login to your account on Expo and download your newly built app.

It is located under Recent Builds. You can also simply click on the Builds menu that's located on the left-hand side of the screen.

  • Click on the project you want to publish. Double-check that the build status is Finished and the platform is iOS.

  • Download the iOS build by pressing Download button on Build artifact section.

    Build Artifact

This will download an IPA file representing your app, which is the format that Apple expects it to be in.

Upload your App to Apple


You'll need to download the Application Loader developer tool if you haven't done so before.

Now that you've downloaded the IPA file you'll need to upload it to Apple's servers.

In order to do this, you'll need to open the Application Loader in XCode.

This is located under the XCode menu in the menubar when XCode is open.

XCode > Open Developer Tool > Application Loader

If Application Loader isn't there, you'll need to download it. Click on "More Developer Tools..." and download it from the Apple Developer Website.

Once it's ready, you can proceed with the steps below.

Upon opening Application Loader, you'll likely be prompted for the credentials of your Apple Developer account.

Once you've successfully submitted them, you'll be able to select the IPA file from your file system.

After selecting it, click "Open" in order to begin uploading the IPA.

Submit to Test Flight

Once the IPA has been uploaded, you can submit it to Test Flight.

In App Store Connect, click on the Test Flight Tab.

You'll see the status of your built version.

  • Red indicates that you need to perform some action.
  • Yellow indicates that some aspect of the process is pending—either from you, or from Apple.
  • Green indicates that the build is being tested in Test Flight, or is ready to be submitted for review.

You won't be able to begin beta testing with Test Flight until an tester from Apple verifies your app.

In order to allow Apple to properly test your Lexicon-powered app, they'll need to have credentials to login your Discourse site.

Before submitting your app, you'll need to create those credentials in Discourse and specify them in App Store Connect.

  • In App Store Connect, click on your app.
  • Click on Test Flight App.
  • Click on Test Information in the sidebar on the left-hand side.
  • Fill the required fields, then check the Sign in required checkbox, and enter the credentials.Review Information Sign In
  • Please also provide information for a person to contact if the review team needs additional information.Review Information Contact

Specify Users for Beta Testing

Beta Test Users can belong to an Internal Group or an External Group.

You can specify internal users by going to the Internal Group section, and clicking on App Store Connect Users.

Similarly, you can specify external users by selecting External Groups, and clicking on Add External Testers.

More Information

Test Flight and App Store Connect are sophisticated tools to help with the process of submitting, testing, and publishing your app.

If you have further questions or just want to learn more, we'd recommend that you make use of Apple's documentation, which is very high quality.

For more information about Test Flight in general, read the documentation.

Similarly, for specific information about beta testing with Test Flight, check out Testing Apps with TestFlight.

Publish to the App Store

Once you've successfully passed Apple's review process and have received enough feedback from your beta testers, you're ready to publish to the App Store and go live! 🎉

As a few final reminders, double-check that...

  • Your Discourse instance is online, reachable, and functioning correctly.
  • The built version of your app is configured to point at the correct Prose server.
  • Your Prose server is online, reachable and healthy.
  • Your Prose server is deployed with the recommended guidlines for production.
    • In particular, ensure that its traffic is encrypted using an SSL certificate.

Next, we'll guide you through the process of publishing your app for Android devices on the Google Play Store.