eduardweb.
Publicare Play Store & App StoreIntermediar#react-native#expo#eas-build#app-store#ios

Cum am publicat pe App Store cu Expo EAS și certificate automate fără bătăi de cap

De Mihai Popescu, 15 aug. 2026 · 2 vizualizări · 3 like-uri

Postat acum 1 zi
json
{
  "cli": {
    "version": ">= 12.0.0"
  },
  "build": {
    "production": {
      "ios": {
        "simulator": false
      },
      "env": {
        "APP_ENV": "production"
      }
    }
  },
  "submit": {
    "production": {
      "ios": {
        "appleId": "dev@firma-ta.ro",
        "ascApiKeyId": "ABC123XYZ",
        "ascApiKeyIssuerId": "69a6de70-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      }
    }
  }
}

Dacă ai lansat vreodată o aplicație iOS clasică acum 5-6 ani, știi coșmarul: descărcat certificate .p12 din Apple Developer Portal, instalat în Keychain, exportat provisioning profiles, erori criptice în Xcode la arhivare. La ultimul proiect (o aplicație B2B cu vreo 4.000 de utilizatori activi), am refuzat să mai deschid Xcode pentru signing și am lăsat EAS CLI să gestioneze totul.

Rezultatul? De la repository gol la primul build urcat în TestFlight am făcut fix 25 de minute.

1. Pregătirea contului Apple Developer

Înainte să dai vreo comandă în terminal, ai nevoie de două lucruri din Apple Developer Portal:

  1. Cont activ de Apple Developer (da, taxa aia de 99$/an nu dispare).
  2. O cheie API de App Store Connect. Mergi la Users and Access -> Integrations -> App Store Connect API, generezi o cheie cu rol de Admin sau App Manager, descarci fișierul .p8 și notezi Key ID și Issuer ID.

Recomand cheia API în loc de login cu contul de Apple ID și 2FA. Cu cheia API nu-ți mai expiră sesiunea la jumătatea build-ului în cloud.

2. Configurarea inițială și prima comandă

Instalează CLI-ul dacă nu-l ai deja (npm install -g eas-cli) și loghează-te în contul tău Expo. În rădăcina proiectului, inițializezi configurarea:

eas build:configure

Asta îți va genera un fișier eas.json. Pentru prima rulare de producție, comanda este directă:

eas build --platform ios --profile production

Aici intervine magia: EAS te va întreba Do you want Expo to handle your iOS credentials?. Răspunzi cu Yes.

EAS CLI se va autentifica prin contul tău Apple (sau direct prin API Key dacă l-ai configurat deja) și va genera automat în contul tău Apple: Distribution Certificate, Bundle Identifier (dacă nu exista deja) și Provisioning Profile-ul de App Store Distribution. Nu trebuie să descarci nimic local.

3. Trade-off-uri: când merge brici și când te încurcă

Sistemul de auto-manage de la Expo este fantastic pentru 90% din proiecte, dar are și limitări:

  • Unde excelează: Proiecte Expo managed sau bare React Native standard. Dacă un certificat expiră peste un an, EAS îl regenerează la următorul build fără intervenție manuală.
  • Unde apar probleme: Dacă ai iOS App Extensions (Share Extension, WidgetKit, Push Notification Service Extensions). Fiecare extensie are nevoie de propriul Bundle ID și Provisioning Profile. În cazul ăsta, auto-manage-ul default va crăpa dacă nu configurezi explicit target-urile suplimentare în credentials.json.

Ca timp de așteptare, un build în cloud pe queue-ul gratuit durează undeva la 15-20 de minute (sau prinzi coadă în orele de vârf din SUA). Pe planul plătit (Production), același build iese în 6-8 minute.

4. Trimiterea automată în TestFlight

După ce build-ul e verde în dashboard-ul Expo, nu descărca fișierul .ipa ca să-l urci cu Transporter. Folosește direct:

eas submit --platform ios --latest

Dacă ai completat secțiunea de submit din eas.json cu cheia de ASC, build-ul ajunge direct în TestFlight în 5-10 minute (după ce trece de procesarea automată Apple).

Voi mai folosiți Fastlane pe mașini locale / GitHub Actions sau ați mutat complet procesul de build și signing în EAS?

Răspunsuri 0

Se încarcă răspunsurile…

Loghează-te pentru a răspunde

Doar membrii comunității pot lăsa comentarii.