Skip to content

Conversation

@pull
Copy link

@pull pull bot commented Jan 29, 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 : )

hassankhan and others added 15 commits January 29, 2026 06:27
# Why

We introduced a stable API for retrieving request headers in
#42626. After fixing `requestHeaders()`
support for development in #42617, we
can now safely deprecate `unstable_headers()` entirely.

# How

Removed the existing `unstable_headers()` implementation and changed the
API to use `requestHeaders()` under-the-hood. Also marked
`unstable_headers()` as deprecated.

# Test Plan

- CI
- Manual testing with the `01-rsc` E2E fixture in `apps/router-e2e`

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

# Why

`useLoaderData()` returns `undefined` for nested index routes because of
a mismatch between how loader data is serialized during SSR and how it's
looked up at runtime.

For an example route `app/nested/index.tsx`, the data is stored under
`/nested` but looked up with `/nested/index`, causing the hook to return
`undefined`.

# How

Normalized the path in `useLoaderData()` to strip the trailing `/index`
suffix after calling `resolveHref()`.

# Test Plan

- CI
- Manual testing with the `server-loaders` fixture in `apps/router-e2e`

# 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

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

Fix ENG-19027

# How

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

Remove docs PR preview action from docs-pr.yml so other actions can be
run on docs PRs.

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

If we enable docs PR CI, then the action in docs-pr.yml will run on this
PR and then we can verify its contents.

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

# Why

When working on expo/skills#16, I realized that
we are missing the prop to disable transparent edge only for specific
screen. There was no limitation to do so, as the
`disableTransparentOnScrollEdge` is an option passed down to a trigger
anyway.

# How

When `disableTransparentOnScrollEdge` is specified on
`NativeTabs.Trigger` use it as the value for the option.

# Test Plan

1. Unit tests
2. Manual testing

**disableTransparentOnScrollEdge={true} on index**



https://github.com/user-attachments/assets/9654e7bf-553e-4075-9481-d9fe5c71f741



**disableTransparentOnScrollEdge={true} on NativeTabs**



https://github.com/user-attachments/assets/95ec0250-33fc-48f8-9a8b-e851346b8fd2



# 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

In order to increase feature parity with options API, adding the
`asChild` prop to `Stack.Screen.Title`.

# How

- Added an `asChild` prop to `StackScreenTitle`. When `true`, the
children are rendered via `headerTitle` as a render function instead of
being passed as a plain `title` string.
- Added dev-mode warnings for misuse: passing a string with `asChild`,
or passing a component without `asChild`.

# Test Plan

1. Unit tests
2. Manual testing

```tsx
<Stack.Screen.Title asChild>
   <LogoTitle />
</Stack.Screen.Title>
```

<img height="400" alt="Simulator Screenshot - iPhone 17 Pro - 2026-01-28
at 14 15 20"
src="https://github.com/user-attachments/assets/90240e3b-c739-4eb0-9e95-26c359f35a3b"
/>


# 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)
…ith other components (#42530)

# Why

The `Stack.Toolbar.SearchBarSlot` component used `sharesBackground` prop
while other toolbar components like `Stack.Toolbar.Button` use
`separateBackground`.

# How

1. Change the prop name
2. Negate the previous value
3. Change the doc comment

# Test Plan

1. Manual testing 
2. Unit tests

# 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: Tomasz Sapeta <tsapeta@expo.dev>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kadi Kraman <kadi@expo.io>
@pull pull bot locked and limited conversation to collaborators Jan 29, 2026
@pull pull bot added the ⤵️ pull label Jan 29, 2026
@pull pull bot merged commit c99029d into code:main Jan 29, 2026
22 of 28 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.

7 participants