In my case, When the finger appears to be stationary, the touchmove event is triggered multiple times. Printing event.nativeEvent shows that the changedTouches and touches values for locationX, locationY, pageX, and pageY do not change, yet the move event is still triggered.
I cannot reproduce the issue in the emulator; it only occurs on a real device. The device I'm using for reproduction is an Oppo Reno8.
System:
OS: macOS 14.2.1
CPU: (8) arm64 Apple M3
Memory: 139.28 MB / 16.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 23.10.0
path: ~/.nvm/versions/node/v23.10.0/bin/node
Yarn:
version: 1.22.22
path: /usr/local/bin/yarn
npm:
version: 10.9.2
path: ~/.nvm/versions/node/v23.10.0/bin/npm
Watchman:
version: 2024.10.21.00
path: /usr/local/bin/watchman
Managers:
CocoaPods:
version: 1.15.2
path: /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.4
- iOS 17.4
- macOS 14.4
- tvOS 17.4
- visionOS 1.1
- watchOS 10.4
Android SDK: Not Found
IDEs:
Android Studio: 2023.3 AI-233.14808.21.2331.11709847
Xcode:
version: 15.3/15E204a
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.11
path: /usr/bin/javac
Ruby:
version: 3.1.0
path: /Users/didi/.rbenv/shims/ruby
npmPackages:
"@react-native-community/cli":
installed: 19.0.0
wanted: 19.0.0
react:
installed: 19.1.0
wanted: 19.1.0
react-native:
installed: 0.80.1
wanted: 0.80.1
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
(NOBRIDGE) LOG Touch Start: {"changedTouches": [{"identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8133981}], "identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8133981, "touches": [{"identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8133981}]}
(NOBRIDGE) LOG Touch Move: {"changedTouches": [{"identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8134190}], "identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8134190, "touches": [{"identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8134190}]}
(NOBRIDGE) LOG Touch Move: {"changedTouches": [{"identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8134901}], "identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8134901, "touches": [{"identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8134901}]}
(NOBRIDGE) LOG Touch End: {"changedTouches": [{"identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8134914}], "identifier": 0, "locationX": 132.9166717529297, "locationY": 412.3333435058594, "pageX": 132.9166717529297, "pageY": 462.3333435058594, "target": 26, "targetSurface": 391, "timestamp": 8134914, "touches": []}
Description
In my case, When the finger appears to be stationary, the touchmove event is triggered multiple times. Printing event.nativeEvent shows that the changedTouches and touches values for locationX, locationY, pageX, and pageY do not change, yet the move event is still triggered.
I cannot reproduce the issue in the emulator; it only occurs on a real device. The device I'm using for reproduction is an Oppo Reno8.
Steps to reproduce
React Native Version
0.80.1
Affected Platforms
Runtime - Android
Output of
npx @react-native-community/cli infoStacktrace or Logs
MANDATORY Reproducer
https://github.com/yandadaFreedom/reproducer-react-native-0.80.1/tree/bug-android-touchmove
Screenshots and Videos