Skip to content

[pull] main from expo:main#643

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

[pull] main from expo:main#643
pull[bot] merged 9 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 : )

# Why

Adds a contribution guide with general instructions.

<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->

# How

Added `CONTRIBUTING.md` in `expo-ui/`
<!--
How did you build this feature or fix this bug and why?
-->

# Test Plan

<!--
Please describe how you tested this change and how a reviewer could
reproduce your test, especially if this PR does not include automated
tests! If possible, please also provide terminal output and/or
screenshots demonstrating your test/reproduction.
-->

# 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)
…43568)

# Why

When config is not provided, reading `bundleIdentifier` will throw an
error (props are `undefined`):
```
TypeError: Cannot read properties of undefined (reading 'bundleIdentifier')
```

# How

Fix types and use optional chaining.

# Test Plan

Create empty app, add `expo-widgets` to plugins in `app.json` without
config:
```json
    "plugins": [
      "expo-widgets"
    ],
```
and run `expo prebuild -p ios`.

## Before
```
$ node_modules/.bin/expo prebuild -p ios --no-install --clean
TypeError: Cannot read properties of undefined (reading 'bundleIdentifier')
```

## After
```
$ node_modules/.bin/expo prebuild -p ios --no-install --clean
✔ Created native directory
✔ Updated package.json | no changes
» ios: groupIdentifier: Expo Widgets: No group identifier provided, using fallback: group.com.jakex7.widgets-plugin-repro.
» ios: bundleIdentifier: Expo Widgets: No bundle identifier provided, using fallback: com.jakex7.widgets-plugin-repro.ExpoWidgetsTarget.
✔ Finished prebuild
```
# Why

<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->

The Config plugins docs were restructured, splitting `plugins-and-mods`
into separate `plugins` and `mods` pages with new heading anchors.
Several pages still link to the old paths, resulting in broken links or
unnecessary redirects.

# Test Plan

<!--
Please describe how you tested this change and how a reviewer could
reproduce your test, especially if this PR does not include automated
tests! If possible, please also provide terminal output and/or
screenshots demonstrating your test/reproduction.
-->

See diff.

# 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

<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->

The Vale prose linter flags headings containing "iPhone" and
"MultiBrowse" as case violations because these terms are not in the
exceptions list for `HeadingCase.yml`. This produces false-positive
warnings when these terms appear in headings.

# How

<!--
How did you build this feature or fix this bug and why?
-->

- Add `iPhone` and `MultiBrowse` to the exceptions list in
`HeadingCase.yml`.

# Test Plan

<!--
Please describe how you tested this change and how a reviewer could
reproduce your test, especially if this PR does not include automated
tests! If possible, please also provide terminal output and/or
screenshots demonstrating your test/reproduction.
-->

Run `yarn lint-prose` and confirm that there are no warnings.

# 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

Adds RNHostView on android, similar to iOS
#40938.
<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->

# How

- With `matchContents` (`RNHostView`'s child dictates size): The child's
Yoga computed dimensions are preserved. A `DisposableEffect` observes
the child's layout changes and feeds them into Compose state.
`Modifier.requiredSize()` constrains the AndroidView to exactly those
dimensions. We did the same on iOS using `frame` modifier.
- Without `matchContents` (`RNHostView`'s parent dictates size): The
AndroidView fills the available Compose space via fillMaxSize(). The
resulting size is synced back to Yoga's shadow tree via `setViewSize`,
so RN children with flex: 1 can expand to fill the parent.

Follow up PR will add RN View example in `BottomSheet` with flex:1.
`BottomSheet` has some other issues like RN View's Pressable events
don't work. It will be solved in a separate PR.

<!--
How did you build this feature or fix this bug and why?
-->

# Test Plan

Added example in NCL. Kept it consistent with the iOS example.


https://github.com/user-attachments/assets/1ca0092b-b120-4176-9ad5-b86f7330c48e



<!--
Please describe how you tested this change and how a reviewer could
reproduce your test, especially if this PR does not include automated
tests! If possible, please also provide terminal output and/or
screenshots demonstrating your test/reproduction.
-->

# 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)
- [x] 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)
# Why

We must upgrade `react-native-reanimated` to version `4.2.2` to properly
support react-native `0.84.x`

# How

- Bump `react-native-reanimated` to `4.2.2`
- Bump `react-native-worklets` to `0.7.4`
- Patch `react-native-reanimated` and react-native-worklets` to work on
iOS release when builing as a framework (link to reanimated PR)

# Test Plan

- BareExpo

# 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 e504dd4 into code:main Mar 3, 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.

5 participants