# Apple Developer Console setup

App Attest is an Apple capability. Before Xcode can sign a build that uses it, the capability has to be enabled on your app's identifier in the Apple Developer portal.

You do this once per app identifier. It takes about a minute.

## Prerequisites

- Apple Developer Program membership (paid).
- Admin or App Manager role on the team that owns the app identifier.
- Your app's bundle identifier, for example `com.yourcompany.yourapp`.

## Steps

1. Go to <https://developer.apple.com/account>.
2. Sign in. Pick the correct team from the top-right team switcher if you belong to more than one.
3. Click **Certificates, Identifiers & Profiles**.
4. In the left sidebar, click **Identifiers**.
5. In the identifier list, find your app's bundle identifier. If it's not there yet, click the **+** button and register it now. Pick **App IDs** → **App**, then enter Description and Bundle ID.
6. Click the identifier to open it.
7. Scroll down to **Capabilities**. (Some Apple UIs call this section **App Services**.) The capabilities are a long checkbox list, alphabetical.
8. Find **App Attest** in the list. Check it.
9. Click **Save** at the top right.
10. Apple may show a confirmation dialog saying provisioning profiles using this identifier will need to be regenerated. For App Attest specifically, Xcode handles this on the next build. Click **Confirm**.

You're done with the console.

## Verifying

Back in the identifier detail page, **App Attest** should now show a green dot next to it. If it doesn't, hard-refresh the page.

## Common questions

### Do I need to regenerate provisioning profiles?

In most cases, no. Xcode's automatic signing picks up the change the next time you build. If you use manual provisioning, download a fresh profile from the **Profiles** tab after saving the capability.

### Does enabling App Attest cost anything on Apple's side?

No. App Attest is a no-cost Apple capability included with the Developer Program. The usage limits that matter are described in Apple's DeviceCheck documentation — they are high enough that a typical app will not hit them.

### Can I test App Attest on a simulator?

No. App Attest requires Apple to sign an attestation using hardware-backed keys, which only real devices can produce. In development, the SDK ships two debug modes for simulator builds — `setDebugMode(.sandbox)` for real network without Apple attestation, or `.local(stubs: [...])` for fully offline work. Both are `#if DEBUG`-gated and physically absent from Release builds. See [Xcode setup](/docs/xcode-setup#troubleshooting).

### What if my team has multiple identifiers for the same app?

Enable App Attest on every identifier that might run the app binary: the main app ID, any app-extension IDs that call AppAttest, and any wildcard IDs you sign with. Extensions do not typically need it unless they call AppAttest directly.

## What's next

- [Xcode setup](/docs/xcode-setup) — add the capability to your project and entitlements.
- [Entitlements reference](/docs/entitlements) — what the Xcode step writes to disk.