Skip to content

[pull] main from expo:main#644

Merged
pull[bot] merged 13 commits intocode:mainfrom
expo:main
Mar 3, 2026
Merged

[pull] main from expo:main#644
pull[bot] merged 13 commits intocode:mainfrom
expo:main

Conversation

@pull
Copy link

@pull pull bot commented Mar 3, 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 : )

vonovak and others added 13 commits March 3, 2026 10:54
…oth react-native-screens 4.24.0 and 4.23.0 (#43576)

# Why

react-native-screens changed the tab class names in version `4.24.0`.
Since we want to support both `4.23.0` and `4.24.0`, we need a way
Link.Preview navigation code to detect screens classes.

This change should be cherry-picked to sdk-55 as well.

# How

I chose to use `responds` with `KVC` in order to support any future
changes in this API. When the API is marked as stable in
`react-native-screens` we can change the API back to use compile time
`as?`

# Test Plan

1. Unit tests
2. Link preview in stack (link preview app in router-e2e)
3. Link preview inside native tabs (native-navigation app in 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

Follow up of #43524

# How

- update package versions
  - `react-native  0.84.0-> 0.84.1`  
  - `@react-native/normalize-colors 0.84.0 ->  0.84.1` 
  - `@react-native/babel-preset 0.84.0->  0.84.1` 
  - `@react-native/dev-middleware 0.84.0 ->  0.84.1`    


# Test Plan

- Bare Expo
- Minimal tester

# 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)
…ldReactNativeFromSource' (#43574)

# Why

Previous name `usePrebuiltReactNative` didn't match e.g. build
properties where the option is named `buildReactNativeFromSource `

# How

Renamed the option to `buildReactNativeFromSource` and inverted the
logic as `build RN from sources` = `don't use prebuilds`

# Test Plan

Validated manually that:

- When passed `false` it consumes prebuilt frameworks
- When passed `true` it builds RN from source

# 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)
- [X] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
# Why

In most cases, it doesn't make sense for us to start the server when
Metro isn't ready. Readiness depends on the file tree scanning, which is
the initial `metro-file-map` crawl phase. When this isn't done, Metro
will wait for this to finish itself upon request, which is done eagerly
even without a request. However, without this finishing no headers can
even be sent, which means requests with a low timeout tolerance may
fail.

Not waiting for the bundler is often non-sensical since no request can
really be ready without it, and we should prolong the initial startup
phase by that time. This is done by `waitForBundler`, which we now
activate when we're not exporting and watch mode is active, as a
heuristic.

Failing `waitForBundler` being set we shouldn't respond to `/status`
requests with `packager-status:running` until the bundler is ready.

# How

- Default `waitForBundler: true` when not exporting / in watch mode
- Delay `/status` response by `bundler.ready()` promise but send headers
early

# Test Plan

- Start up CLI and observe requests waiting properly without timeouts

We can either check `/` or `/status`. Behaviour changes according to the
two middlewares used.

```bash
while ! curl -f -i -m 30 --connect-timeout 30 http://localhost:8081/status; do
  sleep 0.5
done
```

- Tested manually against a development build starting up on Android
(`expo start --android -d`)
- Tested manually against a development build starting up on iOS (`expo
start --ios -d`)

# Checklist

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

- [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).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…routes bundling (#43602)

# Why

When the `expo-widgets` bundle is built, we'd like to skip the API
Routes output being built, since it's not going to have any effect on
the `expo-widgets` bundle. This was only necessary to prepare for
parallel deployment and to ensure that API routes output is valid, and
has no relevance for the `expo-widgets` bundle.

Skipping this means we don't let the build fail on assertions that
aren't relevant for the `expo-widgets` bundle (such as no routes being
present)

# How

- Add `--skip-server` flag to `export:embed` command
- Use `--skip-server` flag in `expo-widget` bundle build script

# Test Plan

- Manually invoke `export:embed --skip-server [...]` on a project

# Checklist

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

- [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).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)

---------

Co-authored-by: Jakub Grzywacz <kontakt@jakubgrzywacz.pl>
…er (#42437)

Co-authored-by: Łukasz Kosmaty <kosmatylukasz@gmail.com>
# Why

When no FAB is passed to toolbar, it tries to render it anyway.

# How

Based on wether FAB is passed or not use different version of
`HorizontalFloatingToolbar`

# Test Plan


![Screenshot 2026-03-03 at
13.28.26.png](https://app.graphite.com/user-attachments/assets/c79c3b42-cede-4c42-af19-3cb0b090bdcf.png)


![Screenshot 2026-03-03 at
13.29.50.png](https://app.graphite.com/user-attachments/assets/604297a6-a41d-4eb7-9534-6247cd16afdf.png)

# 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)
@pull pull bot locked and limited conversation to collaborators Mar 3, 2026
@pull pull bot added the ⤵️ pull label Mar 3, 2026
@pull pull bot merged commit c4a012f into code:main Mar 3, 2026
0 of 3 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.

8 participants