Skip to content

[pull] main from expo:main - #1194

Merged
pull[bot] merged 4 commits into
code:mainfrom
expo:main
Aug 28, 2026
Merged

[pull] main from expo:main#1194
pull[bot] merged 4 commits into
code:mainfrom
expo:main

Conversation

@pull

@pull pull Bot commented Aug 28, 2026

Copy link
Copy Markdown

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 : )

Ubax and others added 4 commits August 28, 2026 12:39
# Why

At the moment all actions are dispatched synchronously. Add support for
transitions.

This is only an initial implementation and we still need to clarify the
best DX/UX.

# How

1. Wrap all queue actions into transition

# Test Plan

1. CI
2. Router e2e

# 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)
# Why

The hidden EAS Simulator preview docs did not cover the latest simulator
command flags and had drifted from the updated EAS Simulator skill. This
made the recommended session setup, app installation, and
live-development workflows incomplete.

# How

- Document the current `simulator:start` options for naming and device
selection, build/archive/Expo Go sources, launch URLs and arguments,
automatic duration and idle limits, and Appium sessions.
- Update the run-and-control guide to prefer start-time app installation
and launch while retaining controller installation for local artifacts.
- Add purpose-based session naming, name filtering, current aliases,
JSON output details, and troubleshooting for stale sessions and invalid
launch-source combinations.
- Update the EAS Simulator waitlist URL.

The command reference was checked against EAS CLI 22.6.0 and the
workflows were aligned with the current EAS Simulator skill.

# Test Plan

Preview

---------

Co-authored-by: Brent Vatne <brentvatne@gmail.com>
Co-authored-by: Aman Mittal <amandeepmittal@live.com>
#49491)

# Why

Fixes #49490.

Since `@expo/ui@57.0.14` (2026-08-26), every widget built with
`expo-widgets` renders the red **"Could not create context for layout
evaluation."** placeholder — including the unmodified `with-widgets`
example. `@expo/ui@57.0.14` added `src/keyboard/textInputState.ts` with
a deep import of
`react-native/Libraries/Components/TextInput/TextInputState`. The stub
resolver in `expo-widgets/metro.config.js` only intercepts the exact
`'react-native'` specifier, so the deep import resolves to the real
react-native and drags the RN core (incl. `InitializeCore`) into the
widget bundle. In the extension's bare JS context, the first require of
`Libraries/BatchedBridge/NativeModules.js` throws `Invariant Violation:
__fbBatchedBridgeConfig is not set` at module-init time, so
`WidgetsJSRuntime` fails to create the JS context.

Full analysis (import chain from the module graph, bisection over
published tarballs, crash path) is in #49490.

# How

Resolve any `react-native/*` deep import as an empty module in
`resolveRequest`, right before the exact-name stubs. This also hardens
the widget bundler against any future deep imports into RN internals —
none of them can work in a bridge-less JS context anyway.

Added a CHANGELOG entry under **Unpublished → Bug fixes**.

# Test plan

- Repro without a simulator, on an unmodified `npx create-expo-app
--example with-widgets` (repro repo:
https://github.com/usmsam/expo-widgets-context-error-repro):
  ```sh
  node node_modules/expo-widgets/scripts/build-bundle.mjs "$PWD"

/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Helpers/jsc
\
    node_modules/expo-widgets/bundle/build/ExpoWidgets.bundle
  ```
Before: `Invariant Violation: __fbBatchedBridgeConfig is not set` (346
modules, 543 KB). After (this change applied to the installed package):
bundle evaluates silently (104 modules, 147 KB). Control experiment
confirmed causality in both directions.
- `__expoWidgetRender` exercised over a real app's layout: 12 widget
states × `systemSmall`/`systemMedium`/`accessoryRectangular` ×
light/dark — 72/72 render to the expected view trees; widgets render on
an iOS 26.5 simulator.
- Note: I could not run the monorepo toolchain (`et check-packages`)
from a sparse clone; the change is config-only and mirrors the existing
`react-native-worklets`/`react-native-reanimated` `{ type: 'empty' }`
handling one switch-case below.

# Notes for reviewers

- On current `main` the crash reproduces the same way (verified against
`main`'s `metro.config.js` — it has `getModulesRunBeforeMainModule: ()
=> []` and the `createContext`/`useContext` stubs already, but not the
deep-import handling; with the prelude removed the entry still crashes
via `TextInputState → Platform.ios → NativePlatformConstantsIOS →
TurboModuleRegistry`).
- An alternative/complementary fix is lazy-importing `TextInputState`
inside `@expo/ui/src/keyboard` — but the resolver hardening protects the
widget bundle from the whole class of deep-import regressions, so it
seems worth having regardless.
- A related but separate issue observed while debugging (not addressed
here): `bundle/index.ts` spreads `...ReactNative` after `...swiftUI`
into `globalThis`, so the `Image` stub added on `main` shadows the
`Image` component from `@expo/ui`, making `<Image systemName=... />`
render as `{"resolveAssetSource":{}}`. Details in #49490.

---------

Co-authored-by: Jakub Grzywacz <kontakt@jakubgrzywacz.pl>
updates agent-cli-detector to 0.1.7 to detect grok in telemetry context
@pull pull Bot locked and limited conversation to collaborators Aug 28, 2026
@pull pull Bot added the ⤵️ pull label Aug 28, 2026
@pull
pull Bot merged commit 889a55f into code:main Aug 28, 2026
34 checks passed
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.

4 participants