[ScreenFooter] - Fix taps absorbed in footer area on Android (physical devices)#3989
Closed
MIchaelZablianov wants to merge 1 commit into
Closed
[ScreenFooter] - Fix taps absorbed in footer area on Android (physical devices)#3989MIchaelZablianov wants to merge 1 commit into
MIchaelZablianov wants to merge 1 commit into
Conversation
Contributor
✅ PR Description Validation PassedAll required sections are properly filled out:
Your PR is good for review! 🚀 This validation ensures all sections from the PR template are properly filled. |
5eceb36 to
1620387
Compare
…ysical devices) Made-with: Cursor
1620387 to
f5fa07c
Compare
M-i-k-e-l
reviewed
Apr 30, 2026
|
|
||
| const childrenArray = React.Children.toArray(children).slice(0, 3).map(renderChild); | ||
|
|
||
| const isStaticVisible = animationDuration === 0 && visible; |
Collaborator
There was a problem hiding this comment.
This line has a good potential for a better solution (a little less footprint and a little more readable IMO).
Click to see a hint
How is `animationDuration === 0` called in `FloatingButton`?
Collaborator
|
Also, did you go over the description? :) |
Collaborator
Author
|
work on it continued in #3990 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
On Android physical devices, taps in the empty padding area of
ScreenFooter(and thereforeFloatingButton, which is now backed byScreenFooter) are absorbed instead of falling through to content behind. This breaksFlatListitems that scroll under aFloatingButton— theironPressnever fires.Root cause:
ScreenFooterwraps everything in a ReanimatedAnimated.Viewand tries to enable fall-through viapointerEvents="box-none". That prop on a ReanimatedAnimated.Viewis unreliable on Android (see referenced upstream issues —pointerEventsis silently ignored, taps in the band are captured).Reproduces only on Android physical devices (not iOS, not Android emulators).
When the caller doesn't need an entrance animation (
animationDuration === 0— which is whatFloatingButton'swithoutAnimationprop sets), notransformis needed at all. We add a static-visible short-circuit to both branches (HOISTED and STICKY) that bypasses Reanimated entirely and renders a plain RNViewtree. PlainViews honourpointerEventscorrectly on Android.For HOISTED,
pointerEvents="box-none"is also forwarded toKeyboardAccessoryView, which propagates it via{...others}to the innerKeyboardTrackingView(a plain RNViewon Android). The prop isn't part ofKeyboardAccessoryView's typed surface, so the spread + cast{...({pointerEvents: 'box-none'} as object)}is used.The non-static (animated) branches are intentionally left unchanged — those still rely on
pointerEventsonAnimated.Viewand are still subject to the same upstream bug. Solving that requires a separate, more invasive change (e.g. shrinking theAnimated.Viewto wrap only the buttons, or replacing it).Repro snippet:
On an Android physical device: scroll
FlatListitems into the FAB band, taps on those items don't fire. With this fix, they do.Upstream references (why
pointerEventsis broken on ReanimatedAnimated.Viewon Android):Changelog
ScreenFooter - Fix taps in the footer's transparent area being absorbed instead of falling through to content behind on Android (physical devices) when
animationDurationis0. AffectsFloatingButtonwithwithoutAnimation.Additional info
N/A
Made with Cursor