Bug: Exaggerated scroll bounce when scrolling with a mouse [macOS]

When scrolling Plex Amp with a mouse that has a scroll wheel (not a trackpad or Apple magic mouse), you see a very exaggerated scroll bounce when you reach the top or bottom. Here’s a video showing the issue.

This is very jarring! Scrolling with this kind of mouse should have no bounce at all, which is how it works everywhere else on the system.

I’ve noticed that too. It didn’t seem as jarring to me, but it’s something we can take a look at. Thanks.

It’s a synthetic bounce to make the app feel more macOS-y, but we can look into making it a setting.

@elan I don’t think a setting is appropriate here. The issue is that ordinarily native macOS scrollable views automatically know when to bounce based off of what kind of pointing device is being used. Since these scrollable areas are non-native, I think the correct solution is to reimplement that behavior. They should bounce if the user is using a trackpad or an Apple magic mouse, and what you guys have now looks and feels good in that situation. It just needs to detect when a user is using a regular mouse and suppress the bounce in that circumstance.

I’m not all that familiar with React Native apps so I don’t know what kind of access it gives you to the underlying scroll events from the system, but if you can access the native scroll events you can determine if they’re coming from a regular mouse vs. a device capable of pixel-precision scrolling like a trackpad by checking their kCGScrollWheelEventIsContinuous field. Perhaps the React scroll events have a similar flag that can distinguish between the two different types of scrolling.

1 Like

It’s just not that easy. Under the hood here it’s Chrome, and Chrome doesn’t do “native” bounce.

1 Like

Forgive me if my unfamiliarity with React Native is coming through since I’m not entirely sure what aspects of the underlying browser environment are available to you there, but perhaps you can determine whether scroll views should bounce by creating an event listener for WheelEvent and checking their deltaMode property? That ought to indicate whether the user is scrolling by pixel or by line, which should correspond with trackpads and regular mice respectively.

This is:

React Native
React Native Web
Chrome
Electron

Basically, the “real” fix is to wait until Chrome supports bounces on macOS.

Fair enough! A setting would certainly be a good compromise in the meantime.

1 Like

Yeah, it’s all about shortest path at the moment :grimacing:

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.