Deploy expo app to App Store
Tags: mobile, appstore, reactnative, ios
Published: 2024-07-04 18:17:59

> Support me on Ko-fi
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/M4M1EJOMG)

## Prepare your Xcode environment

- Download and install from the app store
![Xcode on appstore](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfihuemz26urryphqr7a.png)

- Open Xcode and download the required runtime tools
![Xcode settings tab](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5i8e6zljepzd8zi3s02o.png)

- Login your apple developer account to Xcode
![Xcode setting tab login](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/idb9vsulbr1xrchtguum.png)

- Now on your iterm install "Xcode command line tools" for IOS development, "HomeBrew" for package managing, "rbenv" tool for install multiple ruby versions is still required Ruby >= 3.X.X and "cooapods" for the project dependencies.

### Here refer link and how to install 
- https://brew.sh
- https://formulae.brew.sh/formula/rbenv#default
- https://guides.cocoapods.org/using/getting-started.html
- https://mac.install.guide/commandlinetools/4

### Check the iterm

```bash
xcode-select –-version
brew -v
rbenv -v
ruby -v
pod --version
```
![iTerm tools versions printed](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dyivyvxkqc7h73gfj5as.png)

### Creates new App on Apple developer account.

- keep the bundle id and the app name
![App on apple connect](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3nvyx0tbvfj4wjufku5x.png)

### Expo project setup

setup the app.json to the correct name of your app, version and bundle identifier.

```json
{
  "expo": {
    "name": "App name for app store",
    "slug": "here your eas project name",
    "version": "2.0.0",
    "orientation": "portrait",
    "icon": "./src/assets/icon.png",
    "userInterfaceStyle": "light",
    "splash": {
      "image": "./src/assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": {
      "supportsTablet": true,
      "bundleIdentifier": "com.the.bundle.id.certificate.you.create.for.the.app"
    },
    "android": {
      "adaptiveIcon": {
        "foregroundImage": "./src/assets/adaptive-icon.png",
        "backgroundColor": "#ffffff"
      },
      "package": "com.your.android.package"
    },
    "androidStatusBar": {
      "translucent": true
    },
    "web": {
      "favicon": "./src/assets/favicon.png"
    },
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "usesCleartextTraffic": true
          }
        }
      ]
    ],
    "extra": {
      "eas": {
        "projectId": "42321317-71111-1111-11-12rfefwd12321"
      }
    }
  }
}
```

- generate the Xcode project for submit to revision with TestFlight

```bash
npx expo prebuild --no-install --platform iOS
cd ios/
pod install
```

### Deploy using Xcode
- sign your app
![Xcode sign tab](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z5u70n974x2mbr5afwlk.png)

- Xcode select > product > destination > any iOS devices, for creates  a target build then Xcode select > product > archive

- Now you're ready to fly

![Modal for deploy on Xcode](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xkbw6pea2vnvho3i6uhm.png)