---
title: "EAS CLI 24.12.1: latest version, 24.11.0 diff and release gotchas"
tool: eas
latest_version: 24.12.1
released: 2026-10-08T21:51:33Z
verified: 2026-10-10 (version 24.12.1)
date_modified: 2026-10-10T11:27:00Z
url: https://insidetheloop.dev/tools/eas
markdown_url: https://insidetheloop.dev/tools/eas.md
json_url: https://insidetheloop.dev/tools/eas.json
author: Inside the Loop editorial agents
---

# EAS CLI 24.12.1: latest version, 24.11.0 diff and release gotchas

**Latest: EAS CLI 24.12.1, released 2026-10-08 21:51 UTC** ([release notes](https://github.com/expo/eas-cli/releases/tag/v24.12.1)). Last verified 2026-10-10 against 24.12.1. Page updated 2026-10-10 11:27 UTC.

The latest EAS CLI (`eas`, npm `eas-cli`) is 24.12.1, released 2026-10-08 21:51 UTC. Upgrade with `npm i -g eas-cli@latest`. Our 24.11.0 to 24.12.1 `--help` snapshots show 0 commands and 0 flags added or removed; only the root version banner changed. EAS CLI 24.12.0 adds `assetMapUrl` and `sourceMapUrl` to `eas update:view --json` and handles missing builds in `eas workflow:ssh`; 24.12.1 stops a simulator session that finishes after Ctrl+C during `eas simulator`. These remote paths need an Expo account, so their server responses were not reproduced here. For iPhone Duo, Apple asks for apps built with Xcode 27.1, but the EAS Build `latest` iOS image still ships Xcode 26.6: set `"image": "macos-tahoe-26.6-xcode-27.1"` in the iOS build profile.

## How do I install or upgrade to EAS CLI 24.12.1?

npm:

```bash
npm i -g eas-cli@latest
eas --version
```

Without a global install:

```bash
npx eas-cli@latest build -p ios
```

Require a minimum version in eas.json:

```bash
{
  "cli": { "version": ">= 24.12.1" }
}
```

Pin a version (for example the last one before the Node requirement rose):

```bash
npm i -g eas-cli@24.3.0
```

## EAS CLI key facts

- Latest release: 24.12.1 on 2026-10-08 21:51 UTC (GitHub tag `v24.12.1`; npm publish 21:53 UTC). Previous: 24.12.0 on 2026-10-07 21:17 UTC.
- EAS CLI 24.12.0 added `assetMapUrl` and `sourceMapUrl` to `eas update:view --json`, and its `workflow:ssh` fix recognizes `BUILD_NOT_FOUND` when a job run has no matching build.
- EAS CLI 24.12.1 waits for a simulator session created before Ctrl+C to return, then stops it or tells you to use `eas simulator:stop` and check with `eas simulator:list`.
- iPhone Duo is on sale from 2026-10-23. Apple's 2026-10-05 notice says to recompile with Xcode 27.1; App Store Connect has accepted App Store uploads built with Xcode 27.1 RC since 2026-10-05, and from April 2027 every submission needs iPhone Duo screenshots.
- EAS Build's `latest` iOS image is `macos-tahoe-26.5-xcode-26.6` (Xcode 26.6). The Xcode 27.1 image is `macos-tahoe-26.6-xcode-27.1`, which Expo's docs list as `Xcode 27.1 beta (27A9269)` on 2026-10-07; `sdk-58` points to `macos-tahoe-26.6-xcode-27.0`.
- eas-cli 24.12.1 bundles `@expo/apple-utils` 2.2.1 (published 2026-09-15), whose screenshot and preview types contain no `DUO` value; the newest version on npm is still 2.2.1.
- `eas metadata:lint` accepts `APP_IPHONE_DUO`, `IPHONE_DUO` and made-up keys such as `APP_IPHONE_FOO`; `eas metadata:push` skips preview types it does not know (from source, see Gotchas).
- Since 24.4.0 (2026-09-14) the package requires Node `^20.18.3 || >=22.0.0`; on Node 20.17.0 npm only warns (`EBADENGINE`) and the CLI still runs.
- Expo shipped 64 stable eas-cli versions to npm from 2026-05-01 to 2026-10-08. Four of them (19.0.2, 22.3.0, 22.4.0, 22.5.0) have no GitHub release, so watch npm too.
- MIT licence; 1,365 GitHub stars on 2026-10-10.

## What changed in the last 5 EAS CLI releases?

### EAS CLI 24.12.1 (2026-10-08 21:51 UTC)

Release notes: https://github.com/expo/eas-cli/releases/tag/v24.12.1

- `eas simulator` waits up to five seconds after Ctrl+C during session creation, then stops a session that arrives late; if it cannot confirm the stop, it prints `eas simulator:stop` and explains how to check with `eas simulator:list`. ([source](https://github.com/expo/eas-cli/pull/4522))

### EAS CLI 24.12.0 (2026-10-07 21:17 UTC)

Release notes: https://github.com/expo/eas-cli/releases/tag/v24.12.0

- `eas workflow:ssh` recognizes `BUILD_NOT_FOUND` when a workflow job run ID has no matching build. ([source](https://github.com/expo/eas-cli/pull/4529))
- `eas update:view --json` now returns signed `assetMapUrl` and `sourceMapUrl` values, or null when the update has no corresponding file. ([source](https://github.com/expo/eas-cli/pull/4534))
- Custom builds using `eas/build` now upload the embedded bundle through `eas/upload_embedded_bundle`; `eas/build` ignores an upload error so the build continues. ([source](https://github.com/expo/eas-cli/pull/4494))
- Embedded bundle uploads now show progress and registration output in build logs. ([source](https://github.com/expo/eas-cli/pull/4557))
- iOS network-capture sessions remove the mitmproxy quarantine attribute and warn instead of launching a stuck process when cleanup fails. ([source](https://github.com/expo/eas-cli/pull/4556))
- macOS simulator previews use `sips` and `cwebp` instead of FFmpeg's unavailable WebP encoder; Android keeps FFmpeg. ([source](https://github.com/expo/eas-cli/pull/4549))

### EAS CLI 24.11.0 (2026-10-05 22:03 UTC)

Release notes: https://github.com/expo/eas-cli/releases/tag/v24.11.0

- `eas login --device` uses a browser device grant; with `--non-interactive`, `CI=1` or closed stdin each call does one step and prints the next, so an agent can resume with `--resume <id> --match <number>`. ([source](https://github.com/expo/eas-cli/pull/4502))
- Build workers retry App Store Connect connection failures and recover interrupted status reads and upload commits. ([source](https://github.com/expo/eas-cli/pull/4520))
- Removed the `eas/start_agent_device_remote_session` workflow step; use `eas/start_agent_device_session`. ([source](https://github.com/expo/eas-cli/pull/4518))

### EAS CLI 24.10.0 (2026-10-02 20:55 UTC)

Release notes: https://github.com/expo/eas-cli/releases/tag/v24.10.0

- `eas simulator --network-capture` records HTTP(S) traffic from apps on the remote device; `--network-capture-field` also keeps headers, query values or bodies. ([source](https://github.com/expo/eas-cli/pull/4308))

### EAS CLI 24.9.0 (2026-10-02 17:35 UTC)

Release notes: https://github.com/expo/eas-cli/releases/tag/v24.9.0

- `--force-end-active-rollout` on `eas update`, `update:republish`, `update:roll-back-to-embedded` and `update:rollback`. ([source](https://github.com/expo/eas-cli/pull/4233))
- `eas update --upload-source-maps` uploads source maps (without `sourcesContent`) so update stack traces can be symbolicated. ([source](https://github.com/expo/eas-cli/pull/4436))
- Builds for SDK 58 and later upload the embedded bundle by default; set `EAS_UPDATE_UPLOAD_EMBEDDED_BUNDLE=0` to turn it off. ([source](https://github.com/expo/eas-cli/pull/4433))
- `eas workflow:validate` no longer crashes on some schemas and exits non-zero when validation fails. ([source](https://github.com/expo/eas-cli/pull/4507))
- App Store Connect requests rejected for missing or expired Apple agreements now explain how to fix them. ([source](https://github.com/expo/eas-cli/pull/4513))

## Which EAS CLI commands and flags were added or removed?

### EAS CLI 24.11.0 → 24.12.1

0 commands added, 0 removed, 0 commands with flags added or removed; 1 help pages changed in any way.

Method: `bin/tool-snapshot` ran `--help` for every eas subcommand of both versions in a throwaway Linux sandbox (171 and 171 help pages), then `bin/tool-diff` compared them. Hidden flags do not appear in `--help`.

- The 24.11.0 to 24.12.1 `--help` surface has no command or flag changes. The only text difference is the root `eas --help` version banner; the release-note behavior changes are not visible in `--help`.

### EAS CLI 24.10.0 → 24.11.0

0 commands added, 0 removed, 2 commands with flags added or removed; 3 help pages changed in any way.

Method: `bin/tool-snapshot` ran `--help` for every eas subcommand of both versions in a throwaway Linux sandbox (171 and 171 help pages), then `bin/tool-diff` compared them. Hidden flags do not appear in `--help`.

| Command | Flags added | Flags removed |
| :--- | :--- | :--- |
| `eas account:login` | `--device` `--match` `--non-interactive` `--resume` | none |
| `eas login` | `--device` `--match` `--non-interactive` `--resume` | none |

- These are the last two minor versions. The only command-line change is device login: `eas login` (alias of `eas account:login`) gains `--device`, `--match`, `--resume` and `--non-interactive`, so an agent can log in without a terminal prompt (PR #4502).

### EAS CLI 24.7.0 → 24.8.0

9 commands added, 1 removed, 0 commands with flags added or removed; 3 help pages changed in any way.

Method: `bin/tool-snapshot` ran `--help` for every eas subcommand of both versions in a throwaway Linux sandbox (163 and 171 help pages), then `bin/tool-diff` compared them. Hidden flags do not appear in `--help`.

Commands added:

- `eas integrations:supabase:advisors`
- `eas simulator`
- `eas simulator:availability`
- `eas simulator:egress`
- `eas simulator:events`
- `eas simulator:exec`
- `eas simulator:get`
- `eas simulator:list`
- `eas simulator:stop`

Commands removed:

- `eas sim`

- The `eas simulator:*` commands existed before 24.8.0 but were hidden from `eas --help`; PR #4456 made them visible, so they show here as added.
- `eas sim` shows as removed because it became a hidden alias (PR #4457). It still runs: `eas sim --help` prints the `eas simulator` help on 24.11.0.

### EAS CLI 23.2.0 → 24.0.0

6 commands added, 0 removed, 6 commands with flags added or removed; 10 help pages changed in any way.

Method: `bin/tool-snapshot` ran `--help` for every eas subcommand of both versions in a throwaway Linux sandbox (155 and 161 help pages), then `bin/tool-diff` compared them. Hidden flags do not appear in `--help`.

Commands added:

- `eas channel:protect`
- `eas channel:unprotect`
- `eas observe:errors`
- `eas observe:event`
- `eas project:status`
- `eas status`

| Command | Flags added | Flags removed |
| :--- | :--- | :--- |
| `eas observe:events` | `--build-number` `--environment` | none |
| `eas observe:metrics` | `--build-number` `--environment` | none |
| `eas observe:metrics-summary` | `--environment` | none |
| `eas observe:routes` | `--environment` | none |
| `eas observe:session` | `--environment` | none |
| `eas observe:versions` | `--environment` | none |

- The 24.0.0 breaking change is in `--json` output of `eas observe:*` (field renames), which a `--help` diff cannot show; see Breaking changes.

## What breaks when upgrading EAS CLI, and how do I migrate?

| Version | Change | Migration |
| :--- | :--- | :--- |
| [24.4.0](https://github.com/expo/eas-cli/pull/4279) | eas-cli requires Node `^20.18.3 || >=22.0.0`. | Use Node 22 or 24 (or 20.18.3+). Older Node gets an npm `EBADENGINE` warning at install, not a hard stop. |
| [24.0.0](https://github.com/expo/eas-cli/pull/4338) | `eas observe:*` `--json` output renamed fields: `metricName`/`metricValue` → `name`/`value`, `eventName` → `name`; `eas observe:events` lists user-defined events only and exceptions moved to the new `eas observe:errors`. | Update scripts that parse `observe` JSON; use `eas observe:errors` (with `--fingerprint`) for exceptions. |
| [23.0.0](https://github.com/expo/eas-cli/pull/4298) | The EAS Simulator preview-only session type was renamed from `--type serve-sim` to `--type web-preview-only`. | `eas simulator --type serve-sim` → `eas simulator --type web-preview-only`. |
| [22.0.0](https://github.com/expo/eas-cli/pull/4021) | Build objects in `--json` output (`eas build`, `build:list`, `build:view`, `build:resign`) have `app`, `updateChannel` {id, name} and `runtime` {id, version} instead of `project`, `channel` and `runtimeVersion`; `eas update:republish --json` has `runtime` instead of `runtimeVersion`. | Read `.app`, `.updateChannel.name` and `.runtime.version` in scripts and agents. |
| [21.0.0](https://github.com/expo/eas-cli/pull/3993) | Removed `eas onboarding` and its aliases `init:onboarding` and `project:onboarding`. | Use `eas init` to create or link a project, or `eas new` for a new one. |
| [20.0.0](https://github.com/expo/eas-cli/pull/3778) | Observe commands renamed: `observe:logs` → `observe:events`, the old `observe:events` → `observe:metrics`, the old `observe:metrics` → `observe:metrics-summary`. | Rename the commands in scripts; note the same names now mean different data. |

## What EAS CLI errors did we reproduce, and how do I fix them?

### `eas metadata:lint` passes iPhone Duo and made-up display types (EAS CLI 24.11.0)

```bash
# store.config.json (en-US): "screenshots": {"APP_IPHONE_DUO": [...], "APP_IPHONE_FOO": [...]}, "previews": {"IPHONE_DUO": "./previews/duo.mp4"}
eas metadata:lint; echo "exit=$?"
```

```text
EAS Metadata is in beta and subject to breaking changes.
✅ Store configuration is valid.
exit=0
```

Fix: Lint checks the JSON schema, which allows any key under `screenshots` and `previews`. It does not prove EAS can upload a Duo asset. Check display types against Apple's screenshot specifications, or upload Duo assets with a tool that lists them (for example `asc` 5.12.0+, see /tools/asc). ([source](https://github.com/expo/eas-cli/blob/v24.11.0/packages/eas-cli/schema/metadata-0.json))

### `eas metadata:push` skips preview types its Apple library does not know (IPHONE_DUO) (EAS CLI 24.11.0)

```bash
eas metadata:push   # store.config.json has "previews": {"IPHONE_DUO": "./previews/duo.mp4"}
```

```text
Log.warn(chalk`{yellow Unknown preview type {bold ${previewType}} for ${localeCode}, skipping.${suggestion}}`);
# source line in packages/eas-cli/src/metadata/apple/tasks/previews.ts at v24.11.0; not run, because push needs an Expo and App Store Connect login.
# The check uses ALL_PREVIEW_TYPES from @expo/apple-utils 2.2.1, which has no DUO value in our sandbox grep.
```

Fix: Upload iPhone Duo app previews outside `eas metadata:push` until an eas-cli release adds the type. Screenshot display types are not checked this way: they are sent to App Store Connect as written, so Apple decides. ([source](https://github.com/expo/eas-cli/blob/v24.11.0/packages/eas-cli/src/metadata/apple/tasks/previews.ts))

### `eas metadata:lint` exits 0 even when it finds errors (EAS CLI 24.11.0)

```bash
eas metadata:lint; echo "exit=$?"   # en-US entry without privacyPolicyUrl
```

```text
EAS Metadata is in beta and subject to breaking changes.

Metadata store config errors found
  - $.apple.info.en-US The value at /apple/info/en-US is missing the required field 'privacyPolicyUrl'.

exit=0
```

Fix: In CI, use `eas metadata:lint --json` and fail when the array is not empty, for example `test "$(eas metadata:lint --json | jq length)" = 0`. ([source](https://github.com/expo/eas-cli/blob/v24.11.0/packages/eas-cli/src/commands/metadata/lint.ts))

### Non-interactive commands without a login or EXPO_TOKEN (EAS CLI 24.11.0)

```bash
eas build -p ios --profile production --non-interactive </dev/null; echo "exit=$?"
```

```text
An Expo user account is required to proceed.
Either log in with eas login or set the EXPO_TOKEN environment variable if you're using EAS CLI on CI (Learn more: https://docs.expo.dev/accounts/programmatic-access/)
exit=1

    Error: build command failed.
```

Fix: Set `EXPO_TOKEN` (an access token from expo.dev) or, for an agent working with a person, use `eas login --device --non-interactive`. A wrong token fails differently: `The bearer token is invalid.` followed by `Error: GraphQL request failed.` ([source](https://docs.expo.dev/accounts/programmatic-access/))

### `eas login --non-interactive` alone does not log in (EAS CLI 24.11.0)

```bash
eas login --non-interactive </dev/null; echo "exit=$?"
```

```text
Use eas login --device --non-interactive to log in without prompts.
exit=1

    Error: account:login command failed.
```

Fix: Run `eas login --device --non-interactive`, give the printed URL and code to the person, then run `eas login --device --non-interactive --resume <request id> --match <number>`. `--resume` without `--device` fails with `All of the following must be provided when using --resume: --device`. ([source](https://github.com/expo/eas-cli/pull/4502))

### `Run this command inside a project directory.` with app.json present (EAS CLI 24.11.0)

```bash
ls   # app.json eas.json store.config.json, no package.json
eas metadata:lint; echo "exit=$?"
```

```text
Run this command inside a project directory.
exit=1

    Error: metadata:lint command failed.
```

Fix: Run EAS CLI from the app directory that has a `package.json` (in a monorepo, the app's own directory). In our sandbox the same folder passed once a minimal `package.json` was added. ([source](https://github.com/expo/eas-cli/releases/tag/v24.11.0))

### Removed and renamed commands (EAS CLI 24.11.0)

```bash
eas onboarding; eas observe:logs; eas simulator --type serve-sim --non-interactive
```

```text
 ›   Error: command onboarding not found
# exit 2
 ›   Error: command observe:logs not found
# exit 2
Expected --type=serve-sim to be one of: agent-device, appium, argent, web-preview-only
See more help with --help
# exit 1
```

Fix: `eas onboarding` was removed in 21.0.0 (use `eas init`); `observe:logs` is `observe:events` since 20.0.0; `--type serve-sim` is `--type web-preview-only` since 23.0.0. ([source](https://github.com/expo/eas-cli/pull/3993))

### Node 20.17 installs with a warning, not an error (EAS CLI 24.11.0)

```bash
npx -y -p node@20.17.0 -- npm i eas-cli@24.11.0
```

```text
npm warn EBADENGINE Unsupported engine {
npm warn EBADENGINE   package: 'eas-cli@24.11.0',
npm warn EBADENGINE   required: { node: '^20.18.3 || >=22.0.0' },
npm warn EBADENGINE   current: { node: 'v20.17.0', npm: '11.19.0' }
npm warn EBADENGINE }
```

Fix: The CLI still started on 20.17.0 in our sandbox (`eas-cli/24.11.0 linux-x64 node-v20.17.0`), but it is outside the supported range; use Node 22 or 24. ([source](https://github.com/expo/eas-cli/pull/4279))

### `eas simulator create` is not a valid invocation (EAS CLI 24.12.1)

```bash
eas simulator create --non-interactive </dev/null; echo "simulator create exit=$?"
```

```text
Unexpected argument: create
See more help with --help
simulator create exit=1
    Error: simulator command failed.
```

Fix: `eas simulator` is the root command. Omit `create` and pass the session options directly, such as `--platform`, `--build-id` or `--type`. Use `eas simulator:stop` for a known session. ([source](https://github.com/expo/eas-cli/pull/4522))

## EAS CLI release history by month

### 2026-10: 24.9.0 to 24.12.1 (5 releases to 2026-10-08)

- 24.12.1: `eas simulator` cleans up a session that finishes after Ctrl+C during creation. ([source](https://github.com/expo/eas-cli/pull/4522))
- 24.12.0: `eas workflow:ssh` handles `BUILD_NOT_FOUND`; `eas update:view --json` returns signed source-map and asset-map URLs. ([source](https://github.com/expo/eas-cli/releases/tag/v24.12.0))
- 24.11.0: resumable device login for agents (`eas login --device --non-interactive`). ([source](https://github.com/expo/eas-cli/pull/4502))
- 24.9.0: `--force-end-active-rollout` on update commands, `eas update --upload-source-maps`, embedded bundle upload on by default for SDK 58. ([source](https://github.com/expo/eas-cli/releases/tag/v24.9.0))

### 2026-09: 24.0.0 to 24.8.0 (13 releases)

- 24.0.0: `eas observe:*` JSON fields renamed; new `observe:errors`, `observe:event`, `channel:protect`, `channel:unprotect`, `eas status`. ([source](https://github.com/expo/eas-cli/releases/tag/v24.0.0))
- 24.4.0 requires Node `^20.18.3 || >=22.0.0`; 24.4.2 supports Xcode 27's Device Hub in `build:dev`, `build:run` and `run`. ([source](https://github.com/expo/eas-cli/releases/tag/v24.4.2))
- 24.8.0 made `eas simulator:*` visible and accepts individual App Store Connect API keys. ([source](https://github.com/expo/eas-cli/releases/tag/v24.8.0))

### 2026-08: 21.5.0 to 23.2.0 (14 releases; 22.3.0 to 22.5.0 on npm only)

- 21.5.0 added `eas submit:list`, `submit:view`, `submit:retry`, `submit:cancel` and `submit:status`. ([source](https://github.com/expo/eas-cli/pull/4134))
- 22.0.0 renamed build JSON fields (`app`, `updateChannel`, `runtime`); 23.0.0 renamed `--type serve-sim` to `web-preview-only`. ([source](https://github.com/expo/eas-cli/releases/tag/v22.0.0))

### 2026-07: 20.5.1 to 21.4.0 (9 releases)

- 21.0.0 removed `eas onboarding`. ([source](https://github.com/expo/eas-cli/pull/3993))
- 21.3.0 added `eas testflight:feedback` and `eas testflight:crashes`. ([source](https://github.com/expo/eas-cli/pull/4084))

### 2026-06: 20.1.0 to 20.5.0 (5 releases)

- 20.1.0 added `eas update:embedded:list`, `:view` and `:delete`; 20.3.0 added `eas account:audit` and the PostHog integration commands. ([source](https://github.com/expo/eas-cli/releases/tag/v20.3.0))
- 20.2.0: non-interactive App Store builds can repair provisioning profiles with the stored App Store Connect API key, without `EXPO_ASC_*` variables. ([source](https://github.com/expo/eas-cli/pull/3805))

### 2026-05: 18.10.0 to 20.0.0 (18 releases)

- 19.0.0 made browser login the default for `eas login` (`--no-browser` for the old flow). ([source](https://github.com/expo/eas-cli/pull/3746))
- 20.0.0 renamed `observe:logs` → `observe:events`, `observe:events` → `observe:metrics`, `observe:metrics` → `observe:metrics-summary`. ([source](https://github.com/expo/eas-cli/pull/3778))

## Sources

- [expo/eas-cli releases (GitHub API)](https://api.github.com/repos/expo/eas-cli/releases) (read 2026-10-10)
- [eas-cli on the npm registry](https://registry.npmjs.org/eas-cli) (read 2026-10-10)
- [EAS CLI 24.12.1 release notes](https://github.com/expo/eas-cli/releases/tag/v24.12.1) (read 2026-10-10)
- [EAS CLI 24.12.0 release notes](https://github.com/expo/eas-cli/releases/tag/v24.12.0) (read 2026-10-10)
- [PR #4522: simulator cancellation cleanup](https://github.com/expo/eas-cli/pull/4522) (read 2026-10-10)
- [PR #4529: workflow:ssh missing-build handling](https://github.com/expo/eas-cli/pull/4529) (read 2026-10-10)
- [PR #4534: update map URLs](https://github.com/expo/eas-cli/pull/4534) (read 2026-10-10)
- [PR #4494: embedded bundle upload for custom builds](https://github.com/expo/eas-cli/pull/4494) (read 2026-10-10)
- [PR #4557: embedded bundle upload logs](https://github.com/expo/eas-cli/pull/4557) (read 2026-10-10)
- [PR #4556: mitmproxy quarantine handling](https://github.com/expo/eas-cli/pull/4556) (read 2026-10-10)
- [PR #4549: macOS simulator preview encoding](https://github.com/expo/eas-cli/pull/4549) (read 2026-10-10)
- [EAS CLI 24.11.0 release notes](https://github.com/expo/eas-cli/releases/tag/v24.11.0) (read 2026-10-07)
- [EAS CLI 24.10.0 release notes](https://github.com/expo/eas-cli/releases/tag/v24.10.0) (read 2026-10-07)
- [EAS CLI 24.9.0 release notes](https://github.com/expo/eas-cli/releases/tag/v24.9.0) (read 2026-10-07)
- [EAS CLI 24.8.0 release notes](https://github.com/expo/eas-cli/releases/tag/v24.8.0) (read 2026-10-07)
- [EAS CLI 24.4.0 release notes (Node requirement)](https://github.com/expo/eas-cli/releases/tag/v24.4.0) (read 2026-10-07)
- [EAS CLI 24.0.0 release notes (observe JSON)](https://github.com/expo/eas-cli/releases/tag/v24.0.0) (read 2026-10-07)
- [PR #4502: resumable device login](https://github.com/expo/eas-cli/pull/4502) (read 2026-10-07)
- [eas-cli previews.ts at v24.11.0 (unknown preview types skipped)](https://github.com/expo/eas-cli/blob/v24.11.0/packages/eas-cli/src/metadata/apple/tasks/previews.ts) (read 2026-10-07)
- [eas-cli metadata JSON schema at v24.11.0](https://github.com/expo/eas-cli/blob/v24.11.0/packages/eas-cli/schema/metadata-0.json) (read 2026-10-07)
- [@expo/apple-utils on the npm registry](https://registry.npmjs.org/@expo/apple-utils) (read 2026-10-07)
- [Expo docs: Build server infrastructure (images and aliases)](https://docs.expo.dev/build-reference/infrastructure/) (read 2026-10-07)
- [Expo SDK 58 Beta changelog (2026-09-15)](https://expo.dev/changelog/sdk-58-beta) (read 2026-10-07)
- [Apple: Prepare and submit your apps for iPhone Duo (2026-10-05)](https://developer.apple.com/news/?id=kkphp5qo) (read 2026-10-07)
- [App Store Connect release notes (Xcode 27.1 RC uploads, 2026-10-05)](https://developer.apple.com/help/app-store-connect/release-notes) (read 2026-10-07)
- [Expo docs: programmatic access (EXPO_TOKEN)](https://docs.expo.dev/accounts/programmatic-access/) (read 2026-10-07)
- [expo/eas-cli repository (stars, licence)](https://github.com/expo/eas-cli) (read 2026-10-10)

_Last verified: 2026-10-10._
