SKIP TO CONTENT

CASE STUDY

LIVE BACKEND

GIGGL — Headless iOS Release Lane

Release pipeline for a consumer social iOS app — device E2E verification and 2FA-free EAS → TestFlight delivery.

Topology: commits flow through CI gates (about 1,374 tests, un-skipped by the packageManager fix) into an EAS cloud production build; Brotli log forensics reads build failures, an App Store Connect API key signs the submission with no Apple 2FA, and the app lands on TestFlight, exercising the live backend at api.joingiggl.app with production migrations 0048 to 0051.

PROBLEM

iOS releases required a human answering Apple 2FA prompts, while CI quietly reported green and skipped the entire test suite.

BUILT

A fully headless EAS build → TestFlight lane authenticated by an App Store Connect API key, plus a CI fix that made ~1,374 tests actually run.

tests un-skipped by the CI fix
~1,374
social surfaces wired to live backend
8
production migrations shipped
0048–51
critical/high issues fixed pre-ship
2+18
FAILURE MODES
  • CI green while skipping suites
  • Opaque headless signing failures
  • Apple 2FA blocking automation
  • Lockfile and credential drift

INTERACTIVE — THE SAME PROCESS, TWICE

webhook triggerjob with retriesapproval if riskypost + synclog + alert
TRIGGER ✓ · RETRIES ✓ · APPROVAL ✓ · LOG ✓ · RUNBOOK ✓ — ANYONE CAN RUN OR RECOVER IT

EVIDENCE — REAL ARTIFACTS, CAPTURED FROM DISK

PHASE3 social-wiring doc + production migration list · PENDING
T2
ExpoEAS BuildTypeScriptTurborepoSupabaseGitHub ActionsApp Store Connect API

IMPROVE NEXT: Generalize the headless-release playbook into a shared CI workflow so any Expo app ships to TestFlight through the same verified lane.