Skip to content

NumberField buttons trigger change when scrolling on touch devices #8472

Open
@cbodin

Description

@cbodin

Provide a general summary of the issue here

When scrolling on touch devices on a page with a <NumberField> including increment and decrement buttons, it's very easy to accidentally trigger a change without noticing.

🤔 Expected Behavior?

A scrolling gesture should not trigger any actions as that is pretty unexpected and not default behavior on touch devices. Starting a scroll on the increment/decrement buttons should not do anything.

😯 Current Behavior

Starting the scroll on the increment/decrement buttons will trigger a change.

💁 Possible Solution

The default behavior should probably be to trigger change on click / pointerup / touchend instead of pointerdown / touchstart for touch devices or prevent the change action if the page is being scrolled.

🔦 Context

We are using the NumberField in multiple booking systems with almost all users on mobile devices. We are getting frequent user complaints that they are creating bookings with incorrect quantities.

After checking analytics and logs, we can see that they have indeed triggered the change via the buttons without noticing it.

The problem is probably much more common for us than what we get reports of, as we only hear from the user's that did not notice the incorrect quantity on confirmation pages. Those who notice can edit to the correct quantity before proceeding, thus never contacting support.

🖥️ Steps to Reproduce

This can be reproduced by scrolling on the increment/decrement buttons on the NumberField documentation page: https://react-spectrum.adobe.com/react-aria/NumberField.html

Increasing the button sizes and placing them on the right side to make it easier to click will also inadvertently make this issue pop up very often.

Screen.Recording.2025-06-30.at.18.42.18.mp4

Screen.Recording.2025-06-30.at.18.44.09.mp4

Version

1.10.1

What browsers are you seeing the problem on?

Chrome, Safari

If other, please specify.

No response

What operating system are you using?

MacOS, iOS, Android

🧢 Your Company/Team

No response

🕷 Tracking Issue

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions