# `mix dala.release`
[🔗](https://github.com/manhvu/dala_dev/blob/main/lib/mix/tasks/dala.release.ex#L1)

Builds a release-signed iOS `.ipa` ready to upload to App Store Connect.

    mix dala.release

## Output

`_build/dala_release/<App>.ipa`

Use `mix dala.publish` to upload it to TestFlight.

## Prerequisites

  1. Apple Developer Program membership (paid, $99/yr)
  2. An "Apple Distribution" certificate in your keychain
     (Xcode → Settings → Accounts → Manage Certificates → +)
  3. An App Store provisioning profile for your bundle ID, downloaded
     to `~/Library/Developer/Xcode/UserData/Provisioning Profiles/`.
     `mix dala.provision --distribution` automates the profile download.

## What it does

  1. Resolves a distribution signing identity + App Store profile
     (auto-detect, or `:ios_dist_sign_identity` / `:ios_dist_profile_uuid`
     in `dala.exs`)
  2. Generates `ios/release_device.sh` and runs it:
     - Compiles BEAMs and copies them into the OTP runtime
     - Builds native sources with `-DDALA_RELEASE` so `dala_beam.m`
       drops EPMD + the distribution BEAM args
     - Links the iOS device binary, no EPMD object files
     - Signs the `.app` with the distribution identity (no `get-task-allow`)
     - Packages as `Payload/<App>.app` zipped into `<App>.ipa`

The shipped `.ipa` runs the full BEAM but with no Erlang distribution
surface — `Dala.Dist.ensure_started/1` no-ops at runtime when
`DALA_RELEASE=1`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
