Conversation
# 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>
…po-module-scripts (#46074)
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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 : )