Skip to content

fix: disable dragging for fixed-order and non-draggable handles - #598

Merged
MatiPl01 merged 1 commit into
mainfrom
fix/non-draggable-handle-drag
Jul 9, 2026
Merged

fix: disable dragging for fixed-order and non-draggable handles#598
MatiPl01 merged 1 commit into
mainfrom
fix/non-draggable-handle-drag

Conversation

@MatiPl01

@MatiPl01 MatiPl01 commented Jul 9, 2026

Copy link
Copy Markdown
Owner

Summary

fixed-order and non-draggable custom handles could still be picked up and dragged (visible in the Fixed Order Items example on gesture-handler v3). The old useEnabledGesture toggled config.enabled on a copy of the v3 gesture, which never reached the native handler.

Rather than toggling enabled, Sortable.Handle now attaches the drag gesture only when its mode is draggable. non-draggable and fixed-order handles render without the gesture detector, so the item cannot be picked up. This is adapter-agnostic (v2 and v3 behave the same), so the now-unused useEnabledGesture is dropped from both adapters.

Testing

Verified on the iOS fabric example (gesture-handler v3):

  • fixed-order items are not draggable and keep their ordinal position while other items reorder around them
  • draggable items drag and reorder as before
  • toggling an item between fixed and draggable at runtime works

Known limitation

Toggling a handle's mode at runtime remounts the handle subtree (the gesture detector wrapper is added/removed). This is fine for statically fixed items; item content holding local state would reset if flipped live.

A custom handle now attaches the drag gesture only when its mode is 'draggable'. Fixed-order and non-draggable handles leave it off, so those items can no longer be picked up (previously they were still draggable on gesture-handler v3). Drops the now-unused useEnabledGesture from the v2 and v3 gesture-handler adapters.
@vercel

vercel Bot commented Jul 9, 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 9, 2026 3:38pm

@MatiPl01 MatiPl01 self-assigned this Jul 9, 2026
@github-actions github-actions Bot added the fix label Jul 9, 2026
@MatiPl01
MatiPl01 merged commit 8ed2e81 into main Jul 9, 2026
11 checks passed
@MatiPl01
MatiPl01 deleted the fix/non-draggable-handle-drag branch July 9, 2026 15:42
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant