Skip to content

[pull] main from expo:main#931

Merged
pull[bot] merged 10 commits into
code:mainfrom
expo:main
Jun 3, 2026
Merged

[pull] main from expo:main#931
pull[bot] merged 10 commits into
code:mainfrom
expo:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Jun 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 : )

zoontek and others added 10 commits June 3, 2026 18:09
# Why

The web `FieldGroup` and `FieldSection` used hardcoded hex colors and
their own dark mode handling, which didn't match the rest of the
universal UI.

# How

Swapped the hardcoded colors for the shared `colors` from `webUtils` so
theming is consistent and the manual `useColorScheme` dark variants can
go away. Also tidied up the spacing and gave cards a border with a
proper separator role on the dividers.

# Test Plan

Rendered a `FieldGroup` with a few `FieldSection`s on web and checked it
looks right in both light and dark mode.

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

# Screenshots

<img width="414" height="896"
src="https://github.com/user-attachments/assets/2f4a05b2-72ec-434e-a6f5-55a4455dbe17"
/>

<img width="414" height="896"
src="https://github.com/user-attachments/assets/3fef9404-071f-4942-abae-bceea89bc2c5"
/>
# Why

For some reason merge broke the changelog without a conflicts. 
This PR adds a change to UNPUBLISHED section:
https://github.com/expo/expo/pull/46286/changes#diff-e92c934d636c85205cc69bbabdb3291767d3ab5fda9c6ec9199f8f02057a0298R11
But merge commit adds it to PUBLISHED version:
f7c7b69#diff-e92c934d636c85205cc69bbabdb3291767d3ab5fda9c6ec9199f8f02057a0298R19

# How

Fixes the changelog after merge that caused sections to become
incorrectly ordered.
In #46007, we gave the `@expo/ui/swift-ui` `font` modifier `textStyle`
Dynamic Type scaling. This PR bounds how far the text grows. Currently,
it scales to `accessibility5` with no ceiling, so tight native layouts
overflow at the largest accessibility sizes.

Adds a `dynamicTypeSize` modifier. Pass a single size to pin it, or `{
min, max }` to bound the range (either end optional). For example, we
can now cap growth at an accessibility size for layout safety while
still honoring Dynamic Type, the SwiftUI-native path for [Apple's Larger
Text Accessibility Nutrition
Label](https://developer.apple.com/help/app-store-connect/manage-app-accessibility/larger-text-evaluation-criteria).

```tsx
import { Host, Text } from '@expo/ui/swift-ui';
import { font, dynamicTypeSize } from '@expo/ui/swift-ui/modifiers';

<Host matchContents>
  <Text modifiers={[font({ textStyle: 'body' }), dynamicTypeSize({ max: 'accessibility3' })]}>
    Scales with Dynamic Type, capped at accessibility3
  </Text>
</Host>
```

Accepts the 12 `DynamicTypeSize` cases, `xSmall` through
`accessibility5`. No JS bridge, type, or API surface beyond the new
modifier.

# Test Plan

Smoke-tested on iPhone 17 Pro simulator (iOS 26.5, Xcode 26.5) via
`apps/native-component-list`:

- `pnpm build`, `pnpm lint --max-warnings 0`, and `pnpm test` (13
suites, 66 tests) all green in `packages/expo-ui`.
- `et generate-docs-api-data -p expo-ui` regenerated the unversioned
`expo-ui/swift-ui/modifiers.json` to add the `dynamicTypeSize` and
`DynamicTypeSizeValue` entries. Output matches what's committed, nothing
else changed.
- Modifiers screen renders a `dynamicTypeSize clamp` block with three
`body` lines: unbounded, `{ max: 'large' }`, and `'xSmall'`. Setting iOS
Larger Text to AX5 via `xcrun simctl ui booted content_size
accessibility-extra-extra-extra-large` grows the unbounded line while
the capped line holds at `large` and the fixed line stays at `xSmall`.
Adjacent fixed-size demos hold. Lowering the system size shrinks them
back live, no app restart.

# 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).
  - Not applicable: no module plugin touched.
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…in `fitToContents` mode (#46546)

# Why

Fixes - #46496
In `fitToContents` mode the `BottomSheet` animated open from the
bottom-left corner instead of sliding up from the bottom.

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

# How

- The content height is measured asynchronously via a size preference
key, so on first present childrenSize is still .zero, producing a
`.presentationDetents([.height(0)])`, a zero-size sheet that SwiftUI
animates in from its origin (the bottom-left corner).
- Fall back to `[.medium]` until a real height is measured
(childrenSize.height > 0), then switch to `.height(childrenSize.height)`
once the content lays out, so the open animation starts from a valid
full-width detent and resizes to fit.
  

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

# Test Plan

Tested in the shared repro in the issue.
<!--
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)
# Why

The `react` and `react-dom` version overrides in the workspace don't
seem to be necessary anymore. Keeping it makes it harder to change the
React version in a single app (for example, to test a new release
candidate or an old macOS version)

# How

Removed the `react` and `react-dom` entries from `resolutions` in the
root `package.json` and regenerated `pnpm-lock.yaml`.

# Test Plan

- `pnpm install` at the repo root completes cleanly. 
- Ran bare-expo / NCL
…6551)

## Why

Running `npx create-expo-app --example` without a value shows an
interactive list of examples to choose from. This wasn't documented in
our docs, but could be useful.

## How

Added a bullet to the `--example` section on the create-expo page.

<img width="1122" height="270" alt="image"
src="https://github.com/user-attachments/assets/3cb8f5f1-6835-4e88-83dd-5edd988f6695"
/>

## Test Plan

Spin up locally or preview and visit `/more/create-expo/#--example`.

- [ ] 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 Jun 3, 2026
@pull pull Bot added the ⤵️ pull label Jun 3, 2026
@pull pull Bot merged commit ce7e9b0 into code:main Jun 3, 2026
1 check 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