Skip to content

[pull] main from expo:main#651

Merged
pull[bot] merged 6 commits intocode:mainfrom
expo:main
Mar 5, 2026
Merged

[pull] main from expo:main#651
pull[bot] merged 6 commits intocode:mainfrom
expo:main

Conversation

@pull
Copy link

@pull pull bot commented Mar 5, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

sswrk and others added 6 commits March 5, 2026 12:28
…commit message commands for skipping workflow runs (#43671)

# Why


https://linear.app/expo/issue/ENG-15626/skip-workflow-runs-based-on-commit-message
– added the commit message skip commands for EAS workflows.

Companion PR to expo/universe#25442

# How

Updated the docs for `on` EAS workflows syntax section by adding an
"info" block that tell about this.

# Test Plan

Tested manually:

<img width="1144" height="479" alt="image"
src="https://github.com/user-attachments/assets/2dc33f52-a4fb-4349-a19b-f6c730c7aaec"
/>

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…p fails (#43597)

Fixes #43596

## Why

`expo run:ios --device` can fail with a false-negative prerequisite
error:

`Can't determine id of Simulator app; the Simulator is most likely not
installed on this machine.`

This happens when LaunchServices cannot resolve `id of app "Simulator"`
even though Simulator exists under the active Xcode developer directory.

## What changed

- Added fallback in `SimulatorAppPrerequisite`:
  - first attempt: AppleScript lookup (`id of app "Simulator"`)
  - fallback: resolve Simulator bundle id from
`$(xcode-select
--print-path)/Applications/Simulator.app/Contents/Info.plist`
- Kept existing validation of accepted Simulator bundle ids.
- Kept existing `xcrun simctl help` validation.
- Added tests for:
  - fallback success when LaunchServices lookup fails
  - fallback failure path
- Added changelog entry in `packages/@expo/cli/CHANGELOG.md`.

## Test plan

- Unit tests:
- `yarn workspace @expo/cli test
src/start/doctor/apple/__tests__/SimulatorAppPrerequisite-test.ts
--runInBand --watch=false`
- Lint:
- `yarn workspace @expo/cli lint
src/start/doctor/apple/SimulatorAppPrerequisite.ts
src/start/doctor/apple/__tests__/SimulatorAppPrerequisite-test.ts`
- Manual repro:
  - https://github.com/ciospettw/expo-cli-simulator-launchservices-repro
- `bash repro.sh` reproduces LaunchServices lookup failure while
Simulator bundle id remains resolvable via Info.plist.

---------

Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
Co-authored-by: Phil Pluckthun <phil@kitten.sh>
Co-authored-by: Aman Mittal <amandeepmittal@live.com>
# Why

After merging the react-native 0.84 upgrade, the Dev menu stopped
working. Starting from rn 0.84 `RCT_REMOVE_LEGACY_ARCH` is enabled by
default, causing `currentBridge` to always return `null` and breaking
our dev-menu integration

After merging the React Native 0.84 upgrade, the Dev Menu stopped
working on iOS. Starting from RN 0.84, RCT_REMOVE_LEGACY_ARCH is enabled
by default, causing RCTBridge.current() to always return nil. The
dev-menu relied on currentBridge both as a liveness signal (to gate menu
visibility) and as a source for native module access (DevSettings,
RCTDevMenu, PerfMonitor, packager connection, bundle URL, etc.).

# How

- expo-modules-core:
- Add `AppContext.nativeModule `: a unified native module lookup that
resolves via RCTHost's module registry
- Add `AppContext.bundleURL`: resolves the bundle URL directly from
RCTBundleManager via RCTHost (instead of the module registry, which
doesn't contain RCTBundleManager)
  - 
- expo-dev-menu: 
- Replace `currentBridge` liveness checks with an `isReactAppRunning`
flag on DevMenuManager
- Replace all currentBridge-based native module lookups with
currentAppContext?.nativeModule
  - Replace bridge?.bundleURL with appContext?.bundleURL 
  - Remove ExpoDevMenuReactDelegateHandler



# Test Plan

- BareExpo on iOS

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…mismatch (#43595)

# Why

On Android, `expo-blur` can hit a native mounting mismatch during
aggressive tree transitions
  (for example auth/login/logout root swaps).

  The failure signature is:

`removeViewAt: ... view already removed from parent! Children in parent:
1`

   The app UI becomes unresponsive until app kill and then cold boot.

  # How

The fix updates `ExpoBlurTargetView` to consistently forward child
management and layout operations to its internal
  blur target view.

  Added forwarding overrides for:
  - `addView(child, params)`
  - `addView(child, index, params)`
  - `updateViewLayout(view, params)`
  - `removeViewAt(index)`
  - `removeViews(start, count)`
  - `removeViewsInLayout(start, count)`
  - `removeAllViews()`
  - `removeAllViewsInLayout()`
  - `getChildCount()`
  - `getChildAt(index)`
  - `indexOfChild(child)`

  Why this approach:
  - Under Fabric, parent/child bookkeeping is strict.
- If `ExpoBlurTargetView` and its internal target diverge, detach/mount
commands can be applied to already removed children.
- Forwarding all relevant operations keeps React/Fabric and native
hierarchy in sync.

  # Test Plan

  Environment:
  - Android device (Pixel 7a), Expo SDK 55.
- `BlurTargetView` + `BlurView` present in both unauthenticated and
authenticated trees.
- Tree transition path: login -> authenticated root, logout ->
onboarding root.

  Notes:
  - This change is Android-only.
  - No API changes.

  # Checklist

- [x] I added a `changelog.md` entry and rebuilt the package sources
according to [this short guide](https://
  github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/
  Expo%20Documentation%20Writing%20Style%20Guide.md)
@pull pull bot locked and limited conversation to collaborators Mar 5, 2026
@pull pull bot added the ⤵️ pull label Mar 5, 2026
@pull pull bot merged commit bd95acf into code:main Mar 5, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants