{
  "tool": "expo",
  "name": "Expo CLI",
  "long_name": "Expo CLI / SDK (expo)",
  "aliases": [
    "expo-cli",
    "npx-expo",
    "expo-sdk",
    "@expo/cli"
  ],
  "homepage": "https://docs.expo.dev",
  "url": "https://insidetheloop.dev/tools/expo",
  "markdown_url": "https://insidetheloop.dev/tools/expo.md",
  "date_modified": "2026-10-07T15:45:21Z",
  "title": "Expo CLI 58.0.6: latest version, source diff, breaking changes and gotchas",
  "description": "Expo (npm expo, @expo/cli) 58.0.6 (2026-10-06 UTC): upgrade commands, source diff, Node 22.13 requirement, prebuild clean default, legacy CLI migration errors.",
  "answer": "The latest Expo CLI and SDK (`expo`, npm `@expo/cli`, repo expo/expo) is 58.0.6, released 2026-10-06 17:28 UTC (SDK 58 beta; current npm latest dist-tag is 57.0.27). Upgrade with `npx expo install expo@next --fix` or `npm i -g expo@latest`. In our source diff, the CLI commands are unchanged from 58.0.0; SDK 58 raises the minimum Node.js runtime to >=22.13.0, defaults `expo login` to browser-based auth, and sets command-mode `NODE_ENV` before loading `.env` files. Since 57.0.0, `expo prebuild` clears native folders by default (`--no-clean` to preserve).",
  "latest": {
    "version": "58.0.6",
    "released_at": "2026-10-06T17:28:33Z",
    "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.6"
  },
  "upgrade": [
    {
      "label": "Expo project upgrade (SDK 58 beta)",
      "command": "npx expo install expo@next --fix\nnpx expo --version   # 58.1.5"
    },
    {
      "label": "Expo project upgrade (SDK 57 stable)",
      "command": "npx expo install expo@latest --fix"
    },
    {
      "label": "Global CLI install / update (npm)",
      "command": "npm i -g expo@latest"
    },
    {
      "label": "Create new project (SDK 58 beta)",
      "command": "npx create-expo-app@latest --template default@next"
    },
    {
      "label": "Create new project (SDK 57 stable)",
      "command": "npx create-expo-app@latest my-app"
    },
    {
      "label": "Experimental agent CLI",
      "command": "npx @expo/agent-cli@latest agents:setup"
    }
  ],
  "verified": {
    "date": "2026-10-07",
    "version": "58.0.6",
    "method": "Compared source definitions and tags across expo@58.0.0 to expo@58.0.6 and sdk-57 on GitHub (expo/expo), diffed command declarations and flag specs in packages/@expo/cli/src/ (14 subcommands), verified release publish times from npm and GitHub APIs, and quoted CLI validation errors and diagnostics directly from source code at tag expo@58.0.6 (from source, not run; sandboxes paused)."
  },
  "updated_at": "2026-10-07T15:45:21Z",
  "key_facts": [
    "Latest release: 58.0.6 on 2026-10-06 17:28 UTC (GitHub tag `expo@58.0.6`, npm publish 17:29 UTC, bundled `@expo/cli` 58.1.5). Active stable channel: 57.0.27 (npm publish 2026-10-06 12:10 UTC).",
    "Two release streams are active: SDK 58 (React Native 0.88 RC, iOS 27 / Xcode 27 support) in beta under npm dist-tag `next`, and SDK 57 (React Native 0.86) under `latest`.",
    "Local CLI architecture: `npx expo <command>` executes `@expo/cli` bundled within the project or installed globally; legacy global `expo-cli` is deprecated.",
    "Minimum Node.js raised to `>=22.13.0` in SDK 58 (PR #47202); odd-numbered versions (23, 25) are unsupported.",
    "`expo prebuild` clears and regenerates native folders by default since 57.0.0 (PR #47209); pass `--no-clean` to keep existing native files.",
    "`expo login` defaults to browser-based login in interactive environments since 58.0.0 (PR #46832); use `--no-browser` or pass `--username`/`--password` for username/password login.",
    "Setting `CI=1` turns off file watching and Fast Refresh in `expo start` (documented in `expo start --help` under `AGENTS:`).",
    "Google Play target API 36 extension deadline is 2026-11-01; SDK 57+ targets Android 16 (API 36)."
  ],
  "releases": [
    {
      "version": "58.0.6",
      "released_at": "2026-10-06T17:28:33Z",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.6",
      "changes": [
        {
          "text": "Bootstrap React Native through `react-native/setup-env` instead of `InitializeCore`.",
          "url": "https://github.com/expo/expo/pull/50863"
        },
        {
          "text": "Import `LogBox`, `DevSettings`, and `NativeComponentRegistry` from `react-native` public API.",
          "url": "https://github.com/expo/expo/pull/50862"
        },
        {
          "text": "Updated `@expo/cli@58.1.5`, `expo-modules-core@58.0.14`, and `expo-modules-autolinking@58.0.10`.",
          "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.6"
        }
      ]
    },
    {
      "version": "58.0.5",
      "released_at": "2026-10-05T23:27:50Z",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.5",
      "changes": [
        {
          "text": "Updated dependencies: `@expo/cli@58.1.4`, `@expo/log-box@58.0.10`, `expo-file-system@58.0.6`, `expo-font@58.0.7`.",
          "url": "https://github.com/expo/expo/pull/50976"
        },
        {
          "text": "Prevent prototype pollution in internal object `set()` utility when paths contain `__proto__`, `constructor`, or `prototype` (`@expo/cli` 58.1.3).",
          "url": "https://github.com/expo/expo/pull/51066"
        }
      ]
    },
    {
      "version": "58.0.4",
      "released_at": "2026-10-05T22:26:05Z",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.4",
      "changes": [
        {
          "text": "Add overridable `initialProperties` to `ExpoAppSceneDelegate` for iOS scene lifecycle.",
          "url": "https://github.com/expo/expo/pull/50997"
        },
        {
          "text": "Add `./template.tgz` to package `exports` map for direct template resolution.",
          "url": "https://github.com/expo/expo/pull/51125"
        },
        {
          "text": "Fix `expo start` exit on Node before v22.14.0 when API route calls `console.log`.",
          "url": "https://github.com/expo/expo/pull/51089"
        }
      ]
    },
    {
      "version": "58.0.3",
      "released_at": "2026-10-03T13:19:16Z",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.3",
      "changes": [
        {
          "text": "Use Hermes `TextDecoder` implementation in React Native 0.88 supporting UTF-16, Latin-1, and Windows-1252.",
          "url": "https://github.com/expo/expo/pull/50884"
        },
        {
          "text": "Bump `react-native-web` to `~0.21.3`.",
          "url": "https://github.com/expo/expo/pull/50458"
        },
        {
          "text": "Show thrown error call stacks in terminal even when all frames are collapsed (`@expo/cli` 58.1.2).",
          "url": "https://github.com/expo/expo/pull/50975"
        }
      ]
    },
    {
      "version": "58.0.2",
      "released_at": "2026-10-01T19:35:07Z",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.2",
      "changes": [
        {
          "text": "Fix `AppController.sharedInstace was called before the module was initialized` assertion with `react-native-macos` 0.83.",
          "url": "https://github.com/expo/expo/pull/50885"
        },
        {
          "text": "Declare SwiftPM dependencies in module specs and honour `appContext.mainQueue`.",
          "url": "https://github.com/expo/expo/pull/49821"
        },
        {
          "text": "Resolve Android resource names with `@react-native/asset-utils` (`@expo/cli` 58.1.1).",
          "url": "https://github.com/expo/expo/pull/50861"
        }
      ]
    }
  ],
  "surface": [
    {
      "from": "58.0.5",
      "to": "58.0.6",
      "method": "Compared source command definitions in packages/@expo/cli/src/ at tags expo@58.0.5 and expo@58.0.6 via GitHub compare (from source, not run).",
      "summary": "0 commands added, 0 removed, 0 commands with flags added or removed; 0 command help files changed.",
      "commands_added": [],
      "commands_removed": [],
      "flags": [],
      "notes": [
        "The last two releases. CLI commands (14 subcommands) and flags are identical: 58.0.6 updated React Native initialization bootstrap and dependencies."
      ]
    },
    {
      "from": "58.0.0",
      "to": "58.0.6",
      "method": "Compared source command definitions in packages/@expo/cli/src/ across all SDK 58.0.x patch releases via GitHub compare (from source, not run).",
      "summary": "0 commands added, 0 removed, 0 commands with flags added or removed; 0 command help files changed.",
      "commands_added": [],
      "commands_removed": [],
      "flags": [],
      "notes": [
        "All 14 CLI commands (start, export, run:ios, run:android, prebuild, install, customize, config, lint, serve, login, logout, whoami, register) remained unchanged across the 58.0 line. Patch releases focused on stability, Node 22 runtime fixes, and dependency security."
      ]
    },
    {
      "from": "57.0.27",
      "to": "58.0.6",
      "method": "Compared source command definitions and argument parser specs in packages/@expo/cli/src/ between the active stable line (SDK 57) and the beta line (SDK 58) (from source, not run).",
      "summary": "0 commands added, 0 removed, 1 command with flags added; 2 command help files changed.",
      "commands_added": [],
      "commands_removed": [],
      "flags": [
        {
          "command": "expo login",
          "added": [
            "--no-browser"
          ],
          "removed": []
        }
      ],
      "notes": [
        "The two active release streams. expo login added --no-browser (browser login is now the interactive default, PR #46832). expo start updated --tunnel options to default to Expo Tunnels (@expo/ws-tunnel) with --tunnel ngrok as legacy fallback."
      ]
    },
    {
      "from": "57.0.0",
      "to": "58.0.0",
      "method": "Compared source command definitions and argument parser specs in packages/@expo/cli/src/ between major versions 57.0.0 and 58.0.0 (from source, not run).",
      "summary": "0 commands added, 0 removed, 1 command with flags added; 1 command help file changed.",
      "commands_added": [],
      "commands_removed": [],
      "flags": [
        {
          "command": "expo login",
          "added": [
            "--no-browser"
          ],
          "removed": []
        }
      ],
      "notes": [
        "Major SDK transition. expo login added --no-browser and switched interactive default to browser auth. Minimum Node.js raised from >=18 to >=22.13.0."
      ]
    }
  ],
  "breaking": [
    {
      "version": "58.0.0",
      "change": "Minimum Node.js version raised to ^22.13.0. Node 18, 20, and odd-numbered versions (23, 25) are unsupported and print an error.",
      "migrate": "Upgrade Node.js to >=22.13.0 or >=24.3.0. Check your runtime with node -v.",
      "url": "https://github.com/expo/expo/pull/47202"
    },
    {
      "version": "58.0.0",
      "change": "expo login now defaults to browser-based authentication in interactive terminal sessions. Automated username/password login requires --no-browser.",
      "migrate": "In scripts and non-interactive sessions, pass --no-browser with -u <username> and -p <password>, or run in CI ($CI=1) where username/password login remains default.",
      "url": "https://github.com/expo/expo/pull/46832"
    },
    {
      "version": "58.0.0",
      "change": "Expo commands set NODE_ENV to development or production before loading .env files and app config; inherited NODE_ENV is ignored.",
      "migrate": "Do not rely on NODE_ENV=staging npx expo start; configure custom environment variables or use --no-dev for production bundling.",
      "url": "https://github.com/expo/expo/pull/48741"
    },
    {
      "version": "57.0.0",
      "change": "expo prebuild clears and regenerates native android and ios directories by default. Previously, an explicit --clean was required.",
      "migrate": "If you have manual native modifications in android/ or ios/ that you do not want overwritten, pass npx expo prebuild --no-clean.",
      "url": "https://github.com/expo/expo/pull/47209"
    },
    {
      "version": "58.0.0",
      "change": "iOS 27 scene-based lifecycle is required; prebuild generates SceneDelegate.swift and UIApplicationSceneManifest instead of creating UIWindow in AppDelegate.",
      "migrate": "Use Expo config plugins or ExpoAppDelegate event subscribers instead of overriding didFinishLaunchingWithOptions in native AppDelegate.",
      "url": "https://expo.fyi/ios-scene-lifecycle"
    },
    {
      "version": "58.0.0",
      "change": "expo-file-system File.write() is now asynchronous and returns a Promise. The synchronous variant was renamed File.writeSync().",
      "migrate": "Change File.write(content) to await File.write(content) or File.writeSync(content).",
      "url": "https://github.com/expo/expo/pull/45992"
    },
    {
      "version": "58.0.0",
      "change": "expo-sqlite removed libSQL remote database sync support (syncLibSQL() and libSQLOptions are gone).",
      "migrate": "Use standard SQLite databases or migrate remote sync to dedicated client libraries.",
      "url": "https://github.com/expo/expo/pull/48543"
    }
  ],
  "gotchas": [
    {
      "title": "Node.js below 22.13.0 prints an error to stderr",
      "version": "58.0.6",
      "command": "node -v && npx expo start",
      "output": "Node.js (v20.18.0) is outdated and unsupported. Please update to a newer Node.js LTS version (required: >=22.13.0)\nGo to: https://nodejs.org/en/download",
      "fix": "Update Node.js to version 22.13.0 or newer (or 24.3.0+). Odd-numbered releases like Node 23 and 25 are not supported by Expo.",
      "url": "https://github.com/expo/expo/blob/expo@58.0.6/packages/@expo/cli/src/index.ts#L80-L92"
    },
    {
      "title": "Running legacy global commands prints local CLI migration instructions and exits 1",
      "version": "58.0.6",
      "command": "npx expo upgrade",
      "output": "  $ expo upgrade is not supported in the local CLI, please follow this guide https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/ instead\n# exit 1",
      "fix": "Use npx expo install expo@next --fix (for SDK 58 beta) or npx expo install expo@latest --fix (for SDK 57). For other legacy commands: use npx expo prebuild instead of eject, npx expo-doctor instead of doctor, and eas update instead of publish.",
      "url": "https://github.com/expo/expo/blob/expo@58.0.6/packages/@expo/cli/src/index.ts#L142-L192"
    },
    {
      "title": "Setting --private-key-path without app config certificate throws CommandError",
      "version": "58.0.6",
      "command": "npx expo start --private-key-path ./private-key.pem",
      "output": "CommandError: --private-key-path was specified, but updates.codeSigningCertificate is not set in the resolved app config. Code signing requires both the certificate in app config and the private key. Ensure codeSigningCertificate (and codeSigningMetadata) are present, or omit --private-key-path if you do not intend to sign.\nLearn more: https://docs.expo.dev/eas-update/code-signing/\n# exit 1",
      "fix": "Add updates.codeSigningCertificate and updates.codeSigningMetadata to your app config (app.json / app.config.js), or omit --private-key-path when not code-signing development manifests.",
      "url": "https://github.com/expo/expo/blob/expo@58.0.6/packages/@expo/cli/src/utils/codesigning.ts#L114-L122"
    },
    {
      "title": "Running expo install outside an Expo project throws Project root directory not found",
      "version": "58.0.6",
      "command": "npx expo install react-native",
      "output": "CommandError: Project root directory not found (working directory: /tmp/scratch)\n# exit 1",
      "fix": "Run npx expo commands inside a directory containing package.json and Expo app configuration, or initialize a new app first with npx create-expo-app.",
      "url": "https://github.com/expo/expo/blob/expo@58.0.6/packages/@expo/cli/src/utils/findUp.ts#L7-L13"
    },
    {
      "title": "--non-interactive is unsupported and prints a warning",
      "version": "58.0.6",
      "command": "npx expo start --non-interactive",
      "output": "  --non-interactive is not supported, use $CI=1 instead",
      "fix": "Set the environment variable CI=1 instead of passing --non-interactive. Note that in expo start, CI=1 turns off file watching and Fast Refresh; for headless execution with Fast Refresh, redirect stdout/stderr instead: npx expo start > expo.log 2>&1.",
      "url": "https://github.com/expo/expo/blob/expo@58.0.6/packages/@expo/cli/src/index.ts#L74-L76"
    },
    {
      "title": "expo prebuild overwrites native modifications unless --no-clean is passed",
      "version": "58.0.6",
      "command": "npx expo prebuild",
      "output": "✔ Cleared native project folders\n✔ Created native project | android, ios directories\n# Existing manual modifications in android/ and ios/ were replaced",
      "fix": "Since SDK 57, expo prebuild is clean by default. To preserve manual native edits, pass npx expo prebuild --no-clean.",
      "url": "https://github.com/expo/expo/pull/47209"
    }
  ],
  "monthly": [
    {
      "month": "2026-10",
      "versions": "58.0.1 to 58.0.6 (7 releases to 2026-10-07)",
      "highlights": [
        {
          "text": "58.0.6: React Native bootstrap via setup-env and public API imports for LogBox and DevSettings.",
          "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.6"
        },
        {
          "text": "58.0.4: iOS scene lifecycle initialProperties restored on ExpoAppSceneDelegate.",
          "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.4"
        }
      ]
    },
    {
      "month": "2026-09",
      "versions": "57.0.19 to 58.0.0 (11 releases)",
      "highlights": [
        {
          "text": "58.0.0 (2026-09-10): Expo SDK 58 Beta with React Native 0.88 RC, iOS 27, and Node 22.13 requirement.",
          "url": "https://expo.dev/changelog/sdk-58-beta"
        },
        {
          "text": "58.1.0: Launch URLs updated to __expo_url format; EXPO_NO_DEV_MENU=1 added; Expo Tunnels default.",
          "url": "https://github.com/expo/expo/pull/50290"
        }
      ]
    },
    {
      "month": "2026-08",
      "versions": "57.0.10 to 57.0.18 (16 releases)",
      "highlights": [
        {
          "text": "57.0.15: EAS Observe general availability and crash monitoring integration.",
          "url": "https://expo.dev/changelog/eas-observe-is-now-generally-available"
        },
        {
          "text": "57.0.12: Strict TypeScript API compatibility for React Native 0.87.",
          "url": "https://reactnative.dev/blog/2026/08/11/react-native-0.87"
        }
      ]
    },
    {
      "month": "2026-07",
      "versions": "56.0.13 to 57.0.9 (16 releases)",
      "highlights": [
        {
          "text": "57.0.3: Stable data loaders and native tabs in Expo Router.",
          "url": "https://github.com/expo/expo/releases/tag/expo%4057.0.3"
        },
        {
          "text": "57.0.0: expo prebuild made clean-by-default with --no-clean override.",
          "url": "https://github.com/expo/expo/pull/47209"
        }
      ]
    },
    {
      "month": "2026-06",
      "versions": "56.0.9 to 57.0.1 (7 releases)",
      "highlights": [
        {
          "text": "57.0.0 (2026-06-25): Expo SDK 57 General Availability with React Native 0.86 and Android 16 target.",
          "url": "https://expo.dev/changelog/sdk-57-beta"
        },
        {
          "text": "56.1.16: Device Hub support for Xcode 27+ simulator replacement.",
          "url": "https://github.com/expo/expo/pull/46757"
        }
      ]
    },
    {
      "month": "2026-05",
      "versions": "55.0.19 to 56.0.8 (18 releases)",
      "highlights": [
        {
          "text": "56.0.0 (2026-05-05): Expo SDK 56 GA with Swift native modules performance rewrite (1.6-2.3x faster).",
          "url": "https://expo.dev/blog/talking-to-jsi-in-swift"
        },
        {
          "text": "56.0.0: Added --output option and --device generic to expo run:ios.",
          "url": "https://github.com/expo/expo/pull/43529"
        }
      ]
    }
  ],
  "sources": [
    {
      "title": "Expo package releases and dist-tags on npm",
      "url": "https://registry.npmjs.org/expo",
      "read": "2026-10-07"
    },
    {
      "title": "@expo/cli package releases and dist-tags on npm",
      "url": "https://registry.npmjs.org/@expo%2Fcli",
      "read": "2026-10-07"
    },
    {
      "title": "expo/expo GitHub repository releases API",
      "url": "https://api.github.com/repos/expo/expo/releases",
      "read": "2026-10-07"
    },
    {
      "title": "Expo 58.0.6 release notes on GitHub",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.6",
      "read": "2026-10-07"
    },
    {
      "title": "Expo 58.0.5 release notes on GitHub",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.5",
      "read": "2026-10-07"
    },
    {
      "title": "Expo 58.0.4 release notes on GitHub",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.4",
      "read": "2026-10-07"
    },
    {
      "title": "Expo 58.0.3 release notes on GitHub",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.3",
      "read": "2026-10-07"
    },
    {
      "title": "Expo 58.0.2 release notes on GitHub",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.2",
      "read": "2026-10-07"
    },
    {
      "title": "Expo 58.0.0 release notes on GitHub",
      "url": "https://github.com/expo/expo/releases/tag/expo%4058.0.0",
      "read": "2026-10-07"
    },
    {
      "title": "Expo SDK 58 Beta announcement and changelog",
      "url": "https://expo.dev/changelog/sdk-58-beta",
      "read": "2026-10-07"
    },
    {
      "title": "PR #47202: Raise minimum Node.js version to ^22.13.0",
      "url": "https://github.com/expo/expo/pull/47202",
      "read": "2026-10-07"
    },
    {
      "title": "PR #46832: Make browser-based login default",
      "url": "https://github.com/expo/expo/pull/46832",
      "read": "2026-10-07"
    },
    {
      "title": "PR #47209: Make prebuild clean by default",
      "url": "https://github.com/expo/expo/pull/47209",
      "read": "2026-10-07"
    },
    {
      "title": "PR #48741: Set NODE_ENV from command mode",
      "url": "https://github.com/expo/expo/pull/48741",
      "read": "2026-10-07"
    },
    {
      "title": "PR #43529: Add iOS generic destination, and output option",
      "url": "https://github.com/expo/expo/pull/43529",
      "read": "2026-10-07"
    },
    {
      "title": "PR #50863: Bootstrap React Native through setup-env",
      "url": "https://github.com/expo/expo/pull/50863",
      "read": "2026-10-07"
    },
    {
      "title": "PR #50862: Import LogBox and DevSettings from public API",
      "url": "https://github.com/expo/expo/pull/50862",
      "read": "2026-10-07"
    },
    {
      "title": "PR #50884: Support TextDecoder in React Native 0.88",
      "url": "https://github.com/expo/expo/pull/50884",
      "read": "2026-10-07"
    },
    {
      "title": "PR #50975: Show stack trace in terminal for collapsed frames",
      "url": "https://github.com/expo/expo/pull/50975",
      "read": "2026-10-07"
    },
    {
      "title": "PR #50861: Resolve Android resource names with asset-utils",
      "url": "https://github.com/expo/expo/pull/50861",
      "read": "2026-10-07"
    },
    {
      "title": "PR #50885: Fix macOS AppController initialization assertion",
      "url": "https://github.com/expo/expo/pull/50885",
      "read": "2026-10-07"
    },
    {
      "title": "PR #49821: Declare SwiftPM dependencies in module specs",
      "url": "https://github.com/expo/expo/pull/49821",
      "read": "2026-10-07"
    },
    {
      "title": "PR #50997: iOS scene lifecycle initialProperties on ExpoAppSceneDelegate",
      "url": "https://github.com/expo/expo/pull/50997",
      "read": "2026-10-07"
    },
    {
      "title": "PR #51125: Direct template.tgz file resolution",
      "url": "https://github.com/expo/expo/pull/51125",
      "read": "2026-10-07"
    },
    {
      "title": "PR #51089: Fix start command on Node <22.14 console.log",
      "url": "https://github.com/expo/expo/pull/51089",
      "read": "2026-10-07"
    },
    {
      "title": "PR #51066: Prototype pollution guard in internal set() utility",
      "url": "https://github.com/expo/expo/pull/51066",
      "read": "2026-10-07"
    },
    {
      "title": "PR #50290: Development build launch URLs and EXPO_NO_DEV_MENU",
      "url": "https://github.com/expo/expo/pull/50290",
      "read": "2026-10-07"
    },
    {
      "title": "PR #45992: Async File.write() in expo-file-system",
      "url": "https://github.com/expo/expo/pull/45992",
      "read": "2026-10-07"
    },
    {
      "title": "PR #48543: Remove libSQL support from expo-sqlite",
      "url": "https://github.com/expo/expo/pull/48543",
      "read": "2026-10-07"
    },
    {
      "title": "@expo/cli source at expo@58.0.6 (command definitions, error strings)",
      "url": "https://github.com/expo/expo/tree/expo%4058.0.6/packages/@expo/cli",
      "read": "2026-10-07"
    },
    {
      "title": "Expo iOS scene lifecycle migration guide",
      "url": "https://expo.fyi/ios-scene-lifecycle",
      "read": "2026-10-07"
    },
    {
      "title": "EAS Observe general availability announcement",
      "url": "https://expo.dev/changelog/eas-observe-is-now-generally-available",
      "read": "2026-10-07"
    },
    {
      "title": "React Native 0.87 release notes (Strict TypeScript API)",
      "url": "https://reactnative.dev/blog/2026/08/11/react-native-0.87",
      "read": "2026-10-07"
    },
    {
      "title": "Talking to JSI in Swift (Expo blog)",
      "url": "https://expo.dev/blog/talking-to-jsi-in-swift",
      "read": "2026-10-07"
    }
  ],
  "fixes": []
}
