Skip to content

[pull] main from expo:main#886

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

[pull] main from expo:main#886
pull[bot] merged 9 commits into
code:mainfrom
expo:main

Conversation

@pull

@pull pull Bot commented May 21, 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 9 commits May 21, 2026 09:17
# Why

`markInteractive` could record the `expo.navigation.tti` metric more
than once per screen — when the user navigates away and back to the same
screen (A → B → A).

# How

1. Gate on `interactiveScreensIds` directly — if the screen ID has
already been marked interactive, return early before any TTI work.
2. Remove the now-unused `lastInteractiveCall` field from `ScreenTimes`
and the bookkeeping around it in `useObserveForRouter`.

# Test Plan

1. CI
2. Two new cases in `useObserveForRouter.test.native.tsx`:
- `markInteractive` called twice without a new navigation records the
metric once
- re-focusing the screen after A → B → A does not record a second metric
3. Observe tester

# 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)
…ion (#46061)

## Summary

- Removes the outdated "Built on top of React Navigation" description —
`@react-navigation/*` packages are no longer external dependencies
- Notes that React Navigation source is vendored into
`src/react-navigation/`
- Adds the full `src/react-navigation/` directory tree to the Structure
section
- Clarifies that `fork/` contains Expo-specific overrides on top of the
vendored code

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
# Why

`expo.navigation.tti` was silently skipped for the very first screen on
app launch — the initial focus handler recorded `cold_ttr` but never
seeded `dispatchTime`, so `useObserveForRouter` had nothing to diff
against on `markInteractive`. The tti metric also had no way to
distinguish app-launch navigations from in-app ones.

# How

1. In `initListeners`, on the initial app-launch focus, seed
`storage.screenTimes[screenId]` with `dispatchTime: appLaunchTime` and
`isAppLaunch: true`
2. On subsequent navigated focuses, set `isAppLaunch: false` on the
seeded screen entry.
3. Add `isAppLaunch?: boolean` to the `ScreenTimes` storage shape.
4. In `useObserveForRouter`, forward `isAppLaunch` into the `tti` metric
`params`.

# Test Plan

1. CI
2. `init.test.native.ts`, `useObserveForRouter.test.native.tsx`
3. Observe tester

# 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: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…in precompiled pods pipeline (#46069)

## Why

Previously creating npm packages was done without including the shared
deps (e.x: ExpoImage and ExpoImageManipulator shared underlying
dependencies). This caused runtime crashes with missing dylibs.

## How

This fixes the problem by doing this:

- NPM packages: Adding shared dependencies to packages (will duplicate
in f.ex. expo-image/manipulator - but only one is used at link time)
- Pod install: Added handling of the shared packages in pod install
- Release/debug: Added replacing of shared deps as well in
replace-xcframework.js (switching release/debug)

## Test-plan

✅ Run Release build of BareExpo, verify that it has the image
manipulator and expo image shared deps (SDWebImage*)

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

---------

Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
expo-observe@56.0.12
expo-modules-autolinking@56.0.10
expo-template-tabs@56.0.15
expo-template-default@56.0.15
expo-template-blank@56.0.15
expo-template-blank-typescript@56.0.15
expo-template-bare-minimum@56.0.15
@expo/prebuild-config@56.0.11
@expo/cli@56.1.8
expo@56.0.1
…lbar (#45861)

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# 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)
@pull pull Bot locked and limited conversation to collaborators May 21, 2026
@pull pull Bot added the ⤵️ pull label May 21, 2026
@pull pull Bot merged commit 22a8993 into code:main May 21, 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.

5 participants