Skip to content

[pull] main from expo:main#856

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

[pull] main from expo:main#856
pull[bot] merged 5 commits into
code:mainfrom
expo:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented May 12, 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 : )

intergalacticspacehighway and others added 5 commits May 12, 2026 10:29
# Why

 Adds documentation for the universal TextInput introduced in #45205.  

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

# How

Adds a new textinput universal component docs and updates some examples
in textfield docs.

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

# Test Plan

Verified rendered docs locally for unversioned/ and v56.0.0/.
    

<!--
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)

---------

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

the expo package has a dependency on @expo/vector-icons which we don't
want to have.

# How

remove the dep (but add it to the apps that depend on it, I'll migrate
those to the community packages in another PR)

<!--
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.
-->

- [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)
#45627)

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

`Sharing.shareAsync` on iOS leaks its promise when the user picks an
activity in the share sheet and then cancels the follow-up dialog.
Easiest reproduction: present a share sheet with a PDF, tap **Print**,
then tap **Cancel** in the print dialog. The promise never resolves, and
any caller-side state guarded by `await Sharing.shareAsync(...)` (busy
flags, ref-based sheet tracking) stays stuck and blocks subsequent
calls.

The current `completionWithItemsHandler` in
`packages/expo-sharing/ios/SharingModule.swift` only resolves two of
four `(activityType, completed)` permutations:

```swift
activityController.completionWithItemsHandler = { type, completed, _, _ in
  if type != nil && completed { promise.resolve(nil) }
  if type == nil && !completed { promise.resolve(nil) }
}
```

When the user picks an activity and cancels its follow-up dialog, iOS
calls the handler with `type != nil, completed == false`. Neither branch
matches.

`UIActivityViewController` invokes `completionWithItemsHandler` exactly
once on dismissal for every permutation, so all four cases are terminal
and should settle the promise. Apple docs:
https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/completionwithitemshandler.

Related long-standing reports closed without a fix: #8218, #20567,
#21418, #35835.

# How

Resolve unconditionally inside the handler. `shareAsync` returns
`Promise<void>`, there is no result shape that depends on which branch
fires, and the handler runs at most once per controller lifecycle, so no
double-resolve risk.

```swift
activityController.completionWithItemsHandler = { _, _, _, _ in
  promise.resolve(nil)
}
```

# Test Plan

Verified on iOS with `expo-sharing@55.0.18` (same code as `main`),
patched locally via `pnpm patch` and rebuilt.

| Flow | Before | After |
| --- | --- | --- |
| Tap Print in share sheet, then Cancel in print dialog | Promise never
resolves, subsequent `shareAsync` calls hang | Resolves on dismissal |
| Tap Print, then Print in print dialog | Resolves | Resolves |
| Dismiss share sheet without picking an activity | Resolves | Resolves
|
| Tap an activity, then cancel its compose dialog (Mail, Messages, etc.)
| Same root cause as Print, expected to leak | Resolves on dismissal |

No JS API change. Behavior for callers that already resolved
successfully is unchanged.

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

Rename the `smart_retry` Maestro test job config field to
`retry_failed_only` to match the rename in eas-cli and universe. The new
name is self-explanatory. Linear:
[ENG-21159](https://linear.app/expo/issue/ENG-21159/rename-smart-retry-to-retry-failed-only).

# How

Renamed `smart_retry` → `retry_failed_only` in:

- `docs/pages/eas/workflows/syntax.mdx`
- `docs/pages/eas/workflows/pre-packaged-jobs.mdx` (YAML example +
parameter table)

Docs-only; no behavior change.

# Test Plan

Visual confirmation that the Maestro section in `pre-packaged-jobs.mdx`
and `syntax.mdx` renders with the new field name. Companion PRs land the
matching rename in code:

- expo/eas-cli#3709 (BuildStepInput id)
- expo/universe#27434 (Zod schema + step param)

# Checklist

- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] N/A: \`changelog.md\` (docs-only change, no package sources
touched)
- [ ] N/A: \`npx expo prebuild\` & EAS Build (no module plugin)

Signed-off-by: Ash Wu <hsatac@gmail.com>
@pull pull Bot locked and limited conversation to collaborators May 12, 2026
@pull pull Bot added the ⤵️ pull label May 12, 2026
@pull pull Bot merged commit d623573 into code:main May 12, 2026
21 of 27 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.

5 participants