Skip to content

[pull] main from expo:main#806

Merged
pull[bot] merged 14 commits into
code:mainfrom
expo:main
Apr 27, 2026
Merged

[pull] main from expo:main#806
pull[bot] merged 14 commits into
code:mainfrom
expo:main

Conversation

@pull

@pull pull Bot commented Apr 27, 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 : )

alanjhughes and others added 14 commits April 27, 2026 11:07
…gure (#45008)

# Why


https://linear.app/expo/issue/ENG-20370/replace-enableindebug-from-appjson-with-observeconfigure

# How

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

# Test Plan

1. Unit tests
2. App in bare-expo

# 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)
… with React (#45115)

# Why

`ServerFontResourceDescriptor.crossOrigin` was typed as `string`, which
doesn't match React's `crossOrigin` attribute type. This caused type
errors when passing the descriptor to React DOM elements during SSR.

# How

Changed the `crossOrigin` type in `ServerFontResourceDescriptor` from
`string` to match React's `HTMLAttributes['crossOrigin']`.

# Test Plan

- CI

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

The `ServerFontResourceDescriptor` type was defined internally in
`ExpoFontLoader.ts` and not exported from `expo-font`'s public API.

# How

Moved the `ServerFontResourceDescriptor` type definition from
`src/ExpoFontLoader.ts` to `src/Font.types.ts` with the other public
types and re-exported it from `src/Font.ts`.

# Test Plan

- CI

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

Aligns Host `matchContents` semantics across iOS and Android. Both
platforms now use intrinsic content size (SwiftUI `.fixedSize`, Compose
`onMeasure` `UNSPECIFIED`), so both show consistent behaviour. Also
fixes - #45018



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

# How

- iOS: apply `.fixedSize(horizontal:vertical:)` when `matchContents` is
set so SwiftUI returns the child's ideal size.
- Android: stop clamping `Constraints.Infinity` to safe-area for the
`matchContents` path; clamp now scoped to `useViewportSizeMeasurement`
only. The `onMeasure` `UNSPECIFIED` still feeds infinite max constraints
to Compose so children measure at intrinsic size.
- Updated Compose Host docs with a Note about scrollable children
(`LazyRow`/`LazyColumn`/`Carousel` etc.) crashing when placed directly
under `matchContents`.
- Updated `Carousel` and `DateTimePicker` doc examples to use
`matchContents={{ vertical: true }}` + `style={{ width: '100%' }}` since
their internals scroll horizontally.

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

# Test Plan

Tested in NCL. Verified: long Text under `<Host matchContents>`
overflows to natural width on both platforms.

Old behaviour can be enabled by passing `<Host matchContents={{
vertical: true }} />`. Here Host's width will be sized by RN (align
items stretch) and height will be sized based on the child.
    
 
<!--
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)

---------

Co-authored-by: Aman Mittal <amandeepmittal@live.com>
# Why

There's a loop back to `expo` in `@expo/prebuild-config` that's
unnecessary and is a cyclic dependency. Often, this is as designed and
desirable, but in this case it's superfluous.

This is a bit harder to spot, but `@expo/prebuild-config` specifically
shouldn't or doesn't need to depend on `expo` as a peer. It's pulled in
(directedly) from `@expo/cli` and is hence coupled to a fixed
`@expo/cli` version. This is further affirmed by its direct dependency
on `@expo/config-plugins`

This then specifically affects the `expo-modules-autolinking`
dependency, which can be a direct dependency since the chain of `expo ->
@expo/cli -> @expo/prebuild-config / expo-modules-autolinking` and `expo
-> expo-modules-autolinking` is "strongly" coupled.

# How

- Drop `expo` peer
- Add `expo-modules-autolinking` direct dependency
- Replace accidental `expo/config-plugins` with `@expo/config-plugins`
(since it's already a direct dependency)

Misalignment shouldn't be expected, since the versions in this case are
strongly kept in sync, unless a user directly installs
`@expo/prebuild-config` which isn't supported, or won't have any effect.

# Test Plan

- CI should pass unchanged

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

Related to #45125

`@expo/inline-modules` seems strongly tied to `@expo/cli`, i.e. is a
fixed version. As such, the peer dependency on `expo` is redundant.

All three packages (`expo`, `@expo/cli`, and `@expo/inline-modules`)
depend on `@expo/config-plugins` and should do so directly instead of
looping around.

# How

- Drop peer on `expo` and depend on `@expo/config-plugins` directly
- Fix project test setup and delete duplicate test file

# Test Plan

- CI should pass unchanged

# 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 Apr 27, 2026
@pull pull Bot added the ⤵️ pull label Apr 27, 2026
@pull pull Bot merged commit 7f7cc9e into code:main Apr 27, 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.

7 participants