Skip to content

[pull] main from expo:main#903

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

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

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented May 26, 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 14 commits May 26, 2026 09:10
# Why

This PR adds a new `showSignificantUpdateAcknowledgementAsync` and
`getRequiredRegulatoryFeaturesAsync` functions to the expo-age-range
module

# How

- Added `showSignificantUpdateAcknowledgementAsync` and
`getRequiredRegulatoryFeaturesAsync` functions to the AgeRange module
that display a system-provided interface for users to acknowledge
significant app updates, and required regulatory features, respectively.
iOS 26.4+ only.
- Added new buttons to the AgeRange screen to test the functionality

# Test Plan

- bare expo on device

# 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)
…ge focus (#46235)

# Why

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

# How

<!--
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)
@expo/ui@56.0.14
expo-widgets@56.0.15
expo-updates@56.0.17
expo-router@56.2.7
expo-network-addons@56.0.5
expo-modules-autolinking@56.0.13
expo-observe@56.0.16
expo-modules-core@56.0.13
expo-module-template@56.0.11
expo-linking@56.0.12
expo-dev-launcher@56.0.16
expo-crypto@56.0.4
expo-build-properties@56.0.15
expo-background-task@56.0.15
expo-auth-session@56.0.12
expo-brownfield@56.0.15
expo-audio@56.0.11
expo@56.0.5
expo-age-range@56.0.5
@expo/prebuild-config@56.0.13
@expo/router-server@56.0.12
@expo/metro-config@56.0.13
@expo/local-build-cache-provider@56.0.8
@expo/fingerprint@0.19.3
@expo/inline-modules@0.0.10
expo-template-tabs@56.0.19
expo-template-default@56.0.19
expo-template-blank-typescript@56.0.19
expo-template-blank@56.0.19
expo-template-bare-minimum@56.0.19
@expo/metro-runtime@56.0.13
@expo/cli@56.1.12
expo-asset@56.0.15
expo-constants@56.0.16
expo-task-manager@56.0.15
expo-app-metrics@56.0.14
expo-dev-menu@56.0.15
patch-project@56.0.16
expo-background-fetch@56.0.15
expo-sharing@56.0.14
expo-processing@56.0.14
expo-notifications@56.0.14
expo-location@56.0.14
expo-insights@56.0.14
expo-image-manipulator@56.0.15
expo-image-picker@56.0.14
expo-dev-client@56.0.16
patch-project@56.0.16
expo-widgets@56.0.15
expo-updates@56.0.17
@expo/ui@56.0.14
expo-task-manager@56.0.15
expo-standard-web-crypto@56.0.3
expo-sharing@56.0.14
expo-processing@56.0.14
expo-observe@56.0.16
expo-router@56.2.7
expo-notifications@56.0.14
expo-network-addons@56.0.5
expo-module-template@56.0.11
expo-modules-autolinking@56.0.13
expo-modules-core@56.0.13
expo-location@56.0.14
expo-linking@56.0.12
expo-insights@56.0.14
expo-image-picker@56.0.14
expo-image-manipulator@56.0.15
expo-dev-menu@56.0.15
expo-dev-launcher@56.0.16
expo-crypto@56.0.4
expo-dev-client@56.0.16
expo-constants@56.0.16
expo-build-properties@56.0.15
expo-brownfield@56.0.15
expo-background-task@56.0.15
expo-background-fetch@56.0.15
expo-auth-session@56.0.12
expo-audio@56.0.11
expo-app-metrics@56.0.14
expo-asset@56.0.15
expo@56.0.5
expo-age-range@56.0.5
@expo/router-server@56.0.12
@expo/prebuild-config@56.0.13
@expo/metro-runtime@56.0.13
@expo/metro-config@56.0.13
@expo/local-build-cache-provider@56.0.8
@expo/inline-modules@0.0.10
@expo/fingerprint@0.19.3
@expo/cli@56.1.12
expo-template-tabs@56.0.19
expo-template-default@56.0.19
expo-template-blank-typescript@56.0.19
expo-template-blank@56.0.19
expo-template-bare-minimum@56.0.19
babel-preset-expo@56.0.13
# Why

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

# How

<!--
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)
create-expo-module@56.0.3
…ds installations (#43605)

## Summary

When a project manages CocoaPods via Bundler (i.e., has a `Gemfile` that
lists `cocoapods` as a dependency), `pod-install` currently fails to
detect it and only looks for a globally installed `pod` CLI. This causes
"pod not found" errors for projects using `bundle install` to manage
their Ruby dependencies.

This PR adds Bundler detection to `pod-install` and
`CocoaPodsPackageManager`:

- **`isUsingBundlerAsync(projectRoot)`** — walks up from the project
root looking for a `Gemfile` that contains `cocoapods`, then verifies
`bundle exec pod --version` works
- **`useBundler` constructor option** — when set, all pod commands
(`install`, `update`, `--version`) run via `bundle exec pod` instead of
bare `pod`
- **`pod-install` CLI** — automatically detects Bundler and passes
`useBundler` through to the package manager

### Changes
- `packages/@expo/package-manager/src/ios/CocoaPodsPackageManager.ts` —
add `isUsingBundlerAsync()`, `findGemfile()`, `useBundler` support in
constructor, `_runAsync`, `versionAsync`, `isCLIInstalledAsync`
- `packages/pod-install/src/index.ts` — detect Bundler before CLI check,
pass `useBundler` to manager
-
`packages/@expo/package-manager/src/ios/__tests__/CocoaPodsPackageManager-test.ts`
— tests for Bundler detection and Bundler-mode execution

## Test plan
- [x] Added unit tests for `isUsingBundlerAsync` (no Gemfile, Gemfile
without cocoapods, Gemfile with cocoapods but bundle fails, Gemfile with
cocoapods and bundle succeeds)
- [x] Added unit tests for Bundler-mode `versionAsync` and
`isCLIInstalledAsync`
- [x] Added unit test for Bundler-mode `installAsync`
- [ ] Manual: create a project with `Gemfile` containing `gem
'cocoapods'`, run `bundle install`, then `npx pod-install` — should see
"Using Bundler to run CocoaPods" and use `bundle exec pod install`

Fixes #34949

---------

Co-authored-by: Phil Pluckthun <phil@kitten.sh>
…TextInput, Picker) (#46258)

# Why

The web implementations of the `expo-ui` universal components were
minimal placeholders: hardcoded blue colors, no focus styles, no
hover/pressed states worth speaking of, and inconsistent styling between
components. This PR brings them closer in polish to the native SwiftUI /
Jetpack Compose versions so apps using `Host` on web get something
usable out of the box.

# How

- Added `webUtils.ts` with shared design tokens (colors, durations,
easings, shadows), a `css` tagged template helper, and a
`createWebComponent` wrapper around `unstable_createElement` that types
the resulting component as a regular React Native element (accepting
`style`, `dataSet`, `testID`, etc.).
- Light and dark themes are exposed as CSS variables on `:root`, with
`prefers-color-scheme` handling the switch. `Host` injects this global
stylesheet once via React 19's `<style precedence>`.
- Added a small OKLCH-based color scale generator so a single seed color
produces a coherent 50 to 900 primary scale. `Host` currently seeds it
with `#007aff` (the `colorScheme` and `seedColor` props are wired up but
the scale generation from `seedColor` is left as a TODO).
- Added a `useFocusVisible` hook that mirrors the browser's
`:focus-visible` heuristic, since `Pressable` doesn't expose it. Used by
every interactive component to render a focus ring only on keyboard
navigation.
- Rewrote `Button`, `Checkbox`, `Switch`, `TextInput`, `Picker`, and
`Slider` to use the shared tokens, with proper hover / pressed / focused
/ disabled states and smooth transitions. `Checkbox` and `Switch` now
render a visually hidden native `<input>` for accessibility while
keeping the styled visual on top.
- Extended the local `react-native-web.d.ts` declarations to cover
`dataSet`, animation / transition style properties, `whiteSpace`, and
`appearance`.

# Test Plan

- Open the `expo-ui` example app on web and exercise each component
(Button, Checkbox, Switch, TextInput, Picker, Slider) inside a `Host`.
- Toggle the OS color scheme and confirm the components follow it.
- Tab through the page and confirm the focus ring only appears on
keyboard focus, not on mouse clicks.
- Verify disabled states and `onValueChange` / `onPress` callbacks still
fire as expected.

# 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="250" height="445"
src="https://github.com/user-attachments/assets/372bab80-c42f-471b-9fa9-4ba26997a908"
/>
<img width="250" height="445"
src="https://github.com/user-attachments/assets/1b145e63-939a-44c1-a9d9-877871f56372"
/>
<img width="250" height="445"
src="https://github.com/user-attachments/assets/d87cde17-3a0e-4b54-8a0d-2489bddc322c"
/>
<img width="250" height="445"
src="https://github.com/user-attachments/assets/98339564-9f4c-479d-800f-a42b7583ed35"
/>
<img width="250" height="445"
src="https://github.com/user-attachments/assets/f15d97cc-9e94-47d8-987f-862a7e85dff4"
/>
<img width="250" height="445"
src="https://github.com/user-attachments/assets/b4424a9f-07df-4a65-82d9-508d3dbeb2c5"
/>
# Why

Widgets on Android needs it's own bundle. 

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

# How

Register a gradle task that wil generate the bundle in the
`expo-widgets/res` directory.


![image.png](https://app.graphite.com/user-attachments/assets/d571255f-a8af-4350-ba2f-33efd14041bb.png)



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

# Test Plan

Build Android with expo-widgets and inspect in Android Studio.

<!--
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)
@pull pull Bot locked and limited conversation to collaborators May 26, 2026
@pull pull Bot added the ⤵️ pull label May 26, 2026
@pull pull Bot merged commit f7c7b69 into code:main May 26, 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.

9 participants