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

# Set up code signing

> Configure the signing your app needs to build and ship — with the CLI or manually in the dashboard.

Every build has to be **signed** before Tappify can ship it. Until signing is configured, the **Trigger build** button on the Automation tab stays disabled and shows a **Configure signing** prompt.

Pick one of the two ways below.

## What you'll need

Which signing details you provide depends on your app's framework — the signing page shows the right option automatically:

| Framework                          | You provide                                             |
| ---------------------------------- | ------------------------------------------------------- |
| **Expo**                           | An EAS access token                                     |
| **Bare React Native / native iOS** | A signing certificates repo URL, branch, and passphrase |

## Option A — Set it up with the CLI (recommended)

<Steps>
  <Step title="Install the CLI and log in">
    Follow [Install the CLI](/guides/cli/installation), then run `tappify login`.
  </Step>

  <Step title="Install the prerequisites">
    Make sure `git` is installed, and optionally the
    [GitHub CLI](https://cli.github.com) (`gh`). `configure` checks for
    everything else it needs and tells you if anything's missing.
  </Step>

  <Step title="Link the directory">
    From your project directory, run `tappify link` and pick the project and
    app(s) this directory ships. This writes `.tappify/project.json` so later
    commands know which app to act on.
  </Step>

  <Step title="Run configure">
    Copy the command from the **Set up via CLI** tab on the signing page (it
    includes your app id), or run:

    ```bash theme={null}
    tappify deployments configure
    ```

    It uses your linked app. Pass `--app <appId>` to target a specific app
    (required if you haven't linked).
  </Step>

  <Step title="Choose where the certificates repo lives">
    When prompted, pick one:

    1. **Let Tappify create a private repo** — no extra setup.
    2. **Create it with the GitHub CLI (`gh`)**.
    3. **Paste an existing empty private repo URL**.
  </Step>

  <Step title="Set a passphrase">
    Enter a passphrase, or leave it blank to have one generated for you.
    **Save it** if it's generated.
  </Step>

  <Step title="Finish">
    Follow any remaining prompts. When it's done, return to the signing page and
    click **I've run it — check now** — **Trigger build** unlocks.
  </Step>
</Steps>

## Option B — Enter it manually in the dashboard

On the signing page, choose **Enter manually**.

<Tabs>
  <Tab title="Certificates repo (native / RN)">
    Provide the details of your encrypted signing certificates repo:

    * **Certificates git repo URL**
    * **Branch** (defaults to `main`)
    * **Passphrase**

    Click **Save signing config**. Don't have a certificates repo yet? Use
    [Option A](#option-a-set-it-up-with-the-cli-recommended) instead.
  </Tab>

  <Tab title="EAS (Expo)">
    Paste an **EAS access token** with build + submit scope — create one at
    **expo.dev → Account → Access tokens** — then click **Save signing config**.
  </Tab>
</Tabs>

## After signing is configured

* The signing page shows as **configured** and **Trigger build** is enabled.
* Every build is signed automatically from then on.

## Troubleshooting

* **"Configure code signing before starting a build"** — signing isn't set up yet. Complete Option A or B.
* **CLI: "Missing prerequisites"** — install `git` (and `gh` if you chose that repo option), then re-run. The CLI lists anything else that's missing.
* **CLI: no connected App Store Connect key** — [link App Store Connect](/guides/getting-started/app-store-connect) first, or enter your ASC key when prompted.
* **"No connected GitHub installation"** — connect your GitHub repository to the app before choosing "Let Tappify create a private repo".

Still stuck? Email [support@tappify.ai](mailto:support@tappify.ai).
