Skip to content

[pull] main from expo:main#890

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

[pull] main from expo:main#890
pull[bot] merged 4 commits into
code:mainfrom
expo:main

Conversation

@pull

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

Ubax and others added 4 commits May 22, 2026 09:17
# Why

Some exports were missing from `expo-router/js-tabs` and
`expo-router/js-top-tabs`. Initially the API surface we export was
intentionally reduced, so that we don't need to maintain too many
navigators. However to make the migration easier for people let's export
everything from these packages and then deprecate APIs during SDK 57
cycle, with recommended alternatives

# How

Add `export * from .....`

# Test Plan

1. CI
2. Manual testing of basic imports

# 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

New version of react-native-screens was released with a fix for
software-mansion/react-native-screens#4069.

This release unlocks #45982 and does
not introduce any breaking changes.

# How

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

# Test Plan

1. Router e2e
2. CI

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

---------

Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
…46139)

# Why

`@expo/ui` registers a custom worklet serializer for its
`ObservableState` and `WorkletCallback` SharedObjects.

The current serializer matches any Expo `SharedObject` by checking only
`__expo_shared_object_id__`. Since worklet serializers are registered
globally, this can make `@expo/ui` claim SharedObjects created by other
Expo modules before those modules' own serializers can handle them.

This can break libraries that need custom unpack behavior for their own
SharedObjects.

# How

Brand the SharedObjects created by `@expo/ui` state helpers, then make
the worklet serializer only match branded `@expo/ui` SharedObjects.

This keeps the existing serialization path for `@expo/ui`'s own
`ObservableState` and `WorkletCallback` objects, while avoiding a global
catch-all serializer for every Expo `SharedObject`.

# Test Plan

Manually tested the `@expo/ui/jetpack-compose` `TextField`
`useNativeState` worklet example in a local app(This example is from
ExpoUI Documents):

```tsx
import { Host, TextField, Text, useNativeState } from '@expo/ui/jetpack-compose';
import { fillMaxWidth } from '@expo/ui/jetpack-compose/modifiers';
import { useEffectEvent } from 'react';

export default function WorkletPhoneMaskExample() {
  const phone = useNativeState('');
  const selection = useNativeState({ start: 0, end: 0 });

  const handleValueChange = useEffectEvent((v: string) => {
    'worklet';
    const digits = v.replace(/\D/g, '').slice(0, 10);
    let formatted = digits;
    if (digits.length > 6) {
      formatted = `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;
    } else if (digits.length > 3) {
      formatted = `(${digits.slice(0, 3)}) ${digits.slice(3)}`;
    }
    if (formatted !== v) {
      phone.value = formatted;
      selection.value = { start: formatted.length, end: formatted.length };
    }
  });

  return (
    <Host matchContents>
      <TextField
        value={phone}
        selection={selection}
        keyboardOptions={{ keyboardType: 'phone' }}
        modifiers={[fillMaxWidth()]}
        onValueChange={handleValueChange}>
        <TextField.Placeholder>
          <Text>(555) 123-4567</Text>
        </TextField.Placeholder>
      </TextField>
    </Host>
  );
}

---------

Co-authored-by: nishan (o^▽^o) <nishanbende@gmail.com>
…rence (#46118)

# Why

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

Fix ENG-21389

Algolia crawler fails to index
`/versions/latest/sdk/router/native-tabs/` with a 279KB record vs. 97KB
limit. `MaterialIcon.md` is a union of 4,055 string literals plus one
reflection, which the existing collapse logic skipped because not every
member was literal-ish.

# How

Change the union branch in `resolveTypeName`
(`components/plugins/api/APISectionUtils.tsx`) to collapse based on the
count of literal/templateLiteral members. Mixed unions render
non-literal members normally and append `See description for available
values.` for the rest, since description already contains link.


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

<img width="2620" height="968" alt="CleanShot 2026-05-22 at 00 20 10@2x"
src="https://github.com/user-attachments/assets/61c7643d-608e-4ffe-8d31-76da3c60a1e2"
/>


# 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 May 22, 2026
@pull pull Bot added the ⤵️ pull label May 22, 2026
@pull pull Bot merged commit bc7d687 into code:main May 22, 2026
26 of 30 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.

3 participants