Skip to content

fix: Deduplicate expo example native modules for expo-doctor - #590

Merged
MatiPl01 merged 1 commit into
mainfrom
fix/expo-example-duplicate-deps
Jul 7, 2026
Merged

fix: Deduplicate expo example native modules for expo-doctor#590
MatiPl01 merged 1 commit into
mainfrom
fix/expo-example-duplicate-deps

Conversation

@MatiPl01

@MatiPl01 MatiPl01 commented Jul 7, 2026

Copy link
Copy Markdown
Owner

After #589, the Build Expo App CI job fails npx expo-doctor on the duplicate-dependencies check.

The expo example set installConfig.hoistingLimits: "workspaces", which nested its declared dependencies under example/expo/node_modules instead of hoisting them to the monorepo root, so react, react-native, reanimated and worklets each existed twice. It also declared react-native-sortables, which made expo-doctor walk into the library and flag its gesture-handler v3 test devDep against the app's v2.

Dropping both lets every dependency hoist and dedupe against the shared example-app copies. Expo keeps declaring its other native deps because, unlike fabric/paper, it has no react-native.config.js + getDependencies helper and autolinks from its own package.json. The library stays resolvable because it is JS-only and metro still resolves it as a workspace package.

Verified: expo-doctor's duplicate check passes, expo prebuild + pod install resolve every native module from the monorepo root, and a full expo run:ios builds, launches and renders the example.

Drop hoistingLimits so the expo example's declared deps hoist to the
monorepo root and dedupe against the shared example-app copies instead of
nesting under example/expo. Drop the react-native-sortables declaration
too; it is JS-only and resolved by metro as a workspace package, and
declaring it made expo-doctor walk into the library and flag its
gesture-handler v3 test devDep against the app's v2. Fixes the Build Expo
App CI job.
@vercel

vercel Bot commented Jul 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
react-native-sortables-docs Ignored Ignored Jul 7, 2026 11:36am

@MatiPl01 MatiPl01 self-assigned this Jul 7, 2026
@github-actions github-actions Bot added dependencies Pull requests that update a dependency file example fix labels Jul 7, 2026
@MatiPl01
MatiPl01 merged commit e5af169 into main Jul 7, 2026
11 checks passed
@MatiPl01
MatiPl01 deleted the fix/expo-example-duplicate-deps branch July 7, 2026 11:46
MatiPl01 pushed a commit that referenced this pull request Jul 23, 2026
# [1.10.0](v1.9.4...v1.10.0) (2026-07-23)

### Bug Fixes

* Add item zIndex preserving based on the order of items ([#534](#534)) ([fb0be4e](fb0be4e)), closes [#36877](https://github.com/MatiPl01/react-native-sortables/issues/36877)
* allow scrolling the ScrollView from draggable items on web ([#574](#574)) ([74879ed](74879ed)), closes [#545](#545)
* Balance onTouchesUp on Sortable.Touchable long press ([#594](#594)) ([f977567](f977567))
* Deduplicate expo example native modules for expo-doctor ([#590](#590)) ([e5af169](e5af169)), closes [#589](#589)
* disable dragging for fixed-order and non-draggable handles ([#598](#598)) ([8ed2e81](8ed2e81))
* dragging stops after a screen is detached and re-attached (gesture-handler v3) ([#573](#573)) ([c70a14f](c70a14f)), closes [#349](#349) [react-native-gesture-handler#3560](https://github.com/react-native-gesture-handler/issues/3560) [#349](#349) [#349](#349)
* Item can settle on another item's slot after a rapid re-order ([#591](#591)) ([9d63817](9d63817)), closes [#586](#586)
* Item position drift on slow web container resize ([#562](#562)) ([8973115](8973115))
* Keep npm version from walking yarn workspaces during release ([#609](#609)) ([0d8d869](0d8d869))
* Keep Sortable.Grid measurements when revealed after react-freeze ([#572](#572)) ([609c73c](609c73c)), closes [#519](#519) [#36877](https://github.com/MatiPl01/react-native-sortables/issues/36877)
* keep Sortable.Touchable onTouchesUp firing on web ([#596](#596)) ([8529fa8](8529fa8)), closes [#594](#594)
* Keep Sortable.Touchable tap and long press working on teleported items ([#602](#602)) ([3efb111](3efb111))
* Keep teleported item in sync with collapsed content ([#595](#595)) ([1fbcf9e](1fbcf9e))
* New-Arch grid mount crash in the example and unrunnable expo example ([#589](#589)) ([01aa1a8](01aa1a8))
* Respect Sortable.Flex alignItems before items are measured ([#560](#560)) ([5c84117](5c84117)), closes [#258](#258)
* Restore tap and long press on teleported items ([#599](#599)) ([e73117b](e73117b))
* Sortable.Touchable crash on gesture-handler v3 (onActivate not a worklet) ([#587](#587)) ([4b3007e](4b3007e))
* Support react-native-gesture-handler 3.x types ([#553](#553)) ([83754e0](83754e0))
* Support react-native-reanimated 4.5 / worklets 0.10 ([#566](#566)) ([828c6d6](828c6d6)), closes [/github.com//issues/552#issuecomment-4634261543](https://github.com//github.com/MatiPl01/react-native-sortables/issues/552/issues/issuecomment-4634261543) [#552](#552)

### Features

* Add react-native-pulsar as a top-priority haptics adapter ([#568](#568)) ([642e734](642e734))
* Auto-detect expo-haptics when available ([#558](#558)) ([a0d7602](a0d7602)), closes [#554](#554)
* Reverse items stacking order  ([#535](#535)) ([14c7d82](14c7d82)), closes [#36877](https://github.com/MatiPl01/react-native-sortables/issues/36877)

### Performance Improvements

* Drive active item position from a single reaction ([#586](#586)) ([c498091](c498091)), closes [#584](#584)
@MatiPl01

Copy link
Copy Markdown
Owner Author

馃帀 This PR is included in version 1.10.0 馃帀

The release is available on:

Your semantic-release bot 馃摝馃殌

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file example fix released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant