You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Due for payment 2025-12-03] [$250] Inbox - On larger screens, some clickable elements appear in blank spaces #74827
Version Number: 9.2.49-1 Reproducible in staging?: Y Reproducible in production?: Y If this was caught during regression testing, add the test name, ID and link from TestRail: N/A Email or phone of affected tester (no customers):biruknew45+186ssas5@gmail.com Issue reported by: Applause - Internal Team
Please re-state the problem that we are trying to solve in this issue.
On larger screens, blank areas below the main chat content are clickable/interactive when they should be completely inactive. This occurs when viewing a 1:1 chat with expenses - clicking on blank areas triggers unintended interactions with invisible elements.
What is the root cause of that problem?
In ReportActionsList.tsx, on larger screens when shouldScrollToEndAfterLayout is true, the component renders both:
renderTopReportActions() - visible content shown at the top
InvertedFlatList - hidden with opacity: 0 but still in the DOM
The InvertedFlatList with opacity: 0 (line 866) remains interactive and captures click events on what appears to be "blank areas" below the visible content. The opacity CSS property only controls visibility, not interactivity - elements with opacity: 0 can still receive pointer events and block clicks.
What changes do you think we should make in order to solve the problem?
Add the pointerEvents prop to the InvertedFlatList to disable pointer events when the list is hidden. Setting pointerEvents="none" prevents the invisible list from capturing any click or touch events while keeping it in the DOM for layout calculations.
Changes in src/pages/home/report/ReportActionsList.tsx:
Please re-state the problem that we are trying to solve in this issue.
On larger screens, some clickable elements appear in blank spaces
What is the root cause of that problem?
In our case, in larger screens, shouldScrollToEndAfterLayout is true and we render renderTopReportActions() and just hide InvertedFlatList (which has the same content with renderTopReportActions) with opacity: 0.
changed the title [-]Inbox - On larger screens, some clickable elements appear in blank spaces[/-][+][$250] Inbox - On larger screens, some clickable elements appear in blank spaces[/+]on Nov 14, 2025
Thanks for the proposals! Can either of you explain what the InvertedFlatlist is meant to be displaying? On the OP video it looks like it opens a date field.
changed the title [-][$250] Inbox - On larger screens, some clickable elements appear in blank spaces[/-][+][Due for payment 2025-12-03] [$250] Inbox - On larger screens, some clickable elements appear in blank spaces[/+]on Nov 26, 2025
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.2.63-8 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
@jjcoffee@bfitzexpensify The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the BugZero Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]
[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion: N/A
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
[BugZero Assignee] Create a GH issue for creating/updating the regression test once above steps have been agreed upon.
Link to issue:
Regression Test Proposal
Test:
Go to a 1:1 chat
Create two expenses
Click on the "View" button to open the expenses.
Click on any expense
Send a message to the chat
Attempt to click on the blank area below the message
Verify you cannot click anything in the blank space
Activity
melvin-bot commentedon Nov 11, 2025
Triggered auto assignment to @bfitzexpensify (
Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details. Please add this bug to a GH project, as outlined in the SO.abbasifaizan70 commentedon Nov 11, 2025
Proposal
Please re-state the problem that we are trying to solve in this issue.
On larger screens, blank areas below the main chat content are clickable/interactive when they should be completely inactive. This occurs when viewing a 1:1 chat with expenses - clicking on blank areas triggers unintended interactions with invisible elements.
What is the root cause of that problem?
In
ReportActionsList.tsx, on larger screens whenshouldScrollToEndAfterLayoutistrue, the component renders both:renderTopReportActions()- visible content shown at the topInvertedFlatList- hidden withopacity: 0but still in the DOMThe
InvertedFlatListwithopacity: 0(line 866) remains interactive and captures click events on what appears to be "blank areas" below the visible content. TheopacityCSS property only controls visibility, not interactivity - elements withopacity: 0can still receive pointer events and block clicks.What changes do you think we should make in order to solve the problem?
Add the
pointerEventsprop to theInvertedFlatListto disable pointer events when the list is hidden. SettingpointerEvents="none"prevents the invisible list from capturing any click or touch events while keeping it in the DOM for layout calculations.Changes in
src/pages/home/report/ReportActionsList.tsx:What alternative solutions did you explore? (Optional)
Alternative 1: Replace
opacitywithdisplay: noneCould change the style from
opacity: 0todisplay: nonewhen hidden:However, this approach:
Alternative 2: Conditionally render the InvertedFlatList
Could use
{!shouldScrollToEndAfterLayout && <InvertedFlatList ... />}to completely unmount when not visible. However:Alternative 3: Wrap in View with
pointerEvents="box-none"Could wrap the FlatList in a View with controlled pointer events. However:
pointerEventsprop works directly on FlatList, so wrapper is redundantmukhrr commentedon Nov 11, 2025
Proposal
Please re-state the problem that we are trying to solve in this issue.
On larger screens, some clickable elements appear in blank spaces
What is the root cause of that problem?
In our case, in larger screens,
shouldScrollToEndAfterLayoutistrueand we renderrenderTopReportActions()and just hideInvertedFlatList(which has the same content withrenderTopReportActions) withopacity: 0.App/src/pages/home/report/ReportActionsList.tsx
Lines 855 to 868 in 435662d
What changes do you think we should make in order to solve the problem?
We can use
visiblitystyle instead ofopacityWhat alternative solutions did you explore? (Optional)
Or we can use
display: blockinstead offlexwhenshouldScrollToEndAfterLayoutisfalsemelvin-bot commentedon Nov 14, 2025
Job added to Upwork: https://www.upwork.com/jobs/~021989314796236370370
[-]Inbox - On larger screens, some clickable elements appear in blank spaces[/-][+][$250] Inbox - On larger screens, some clickable elements appear in blank spaces[/+]melvin-bot commentedon Nov 14, 2025
Triggered auto assignment to Contributor-plus team member for initial proposal review - @jjcoffee (
External)jjcoffee commentedon Nov 14, 2025
Thanks for the proposals! Can either of you explain what the
InvertedFlatlistis meant to be displaying? On the OP video it looks like it opens a date field.20 remaining items
[-][$250] Inbox - On larger screens, some clickable elements appear in blank spaces[/-][+][Due for payment 2025-12-03] [$250] Inbox - On larger screens, some clickable elements appear in blank spaces[/+]melvin-bot commentedon Nov 26, 2025
Reviewinglabel has been removed, please complete the "BugZero Checklist".melvin-bot commentedon Nov 26, 2025
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.2.63-8 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2025-12-03. 🎊
For reference, here are some details about the assignees on this issue:
melvin-bot commentedon Nov 26, 2025
@jjcoffee @bfitzexpensify The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the BugZero Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]
bfitzexpensify commentedon Dec 3, 2025
$250 paid to @mukhrr ✅
@jjcoffee, please complete the BZ checklist
mukhrr commentedon Dec 3, 2025
@bfitzexpensify thanks! Accepted
melvin-bot commentedon Dec 3, 2025
Payment Summary
Upwork Job
BugZero Checklist (@bfitzexpensify)
jjcoffee commentedon Dec 4, 2025
BugZero Checklist:
[Contributor] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
Link to comment: https://github.com/Expensify/App/pull/71084/files#r2588079656
[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion: N/A
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
[BugZero Assignee] Create a GH issue for creating/updating the regression test once above steps have been agreed upon.
Link to issue:
Regression Test Proposal
Test:
Do we agree 👍 or 👎
trjExpensify commentedon Dec 5, 2025
approved $250 for @jjcoffee.