Skip to content

[Due for payment 2025-05-30] [Better Expense Report View] Use the same component for Transaction row in Search / Reports / Inbox #61512

Closed

Description

@mountiny

Follow up from #59804 (comment)

Lets use the same component for transaction in Search and in the new expense report view

Issue OwnerCurrent Issue Owner: @trjExpensify

Activity

  1. added
    BugSomething is broken. Auto assigns a BugZero manager.
    on May 6, 2025
  2. melvin-bot commented on May 6, 2025

    @melvin-bot

    Triggered auto assignment to @NicMendonca (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.

  3. nabi-ebrahimi commented on May 6, 2025

    @nabi-ebrahimi
    Contributor

    Proposal

    Please re-state the problem that we are trying to solve in this issue.

    Currently, we use different components to render the same type of transaction row across the Search, Reports, and Inbox views. This inconsistency increases the maintenance burden and causes visual or behavioral discrepancies between views.

    What is the root cause of that problem?

    When new views like the expense report were introduced, instead of reusing the existing component logic used in Search and Inbox, new implementations were created. This led to duplicated code and design inconsistencies.

    What changes do you think we should make in order to solve the problem?

    We should create a single shared TransactionRow component that encapsulates the common UI and behavior logic for transaction rows. This component should be flexible enough to handle contextual differences via props (e.g., for highlighting, tap actions, or contextual icons). Then we can refactor the Search, Inbox, and Expense Report views to use this shared component.

    What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?

    • Rendering a transaction row with and without additional context (e.g., receipts, policy icons, etc.).

    • Verifying that the shared component renders correctly in Search, Inbox, and Report views.

    • Ensuring props like isSelected, onPress, highlightColor, and showReceiptIcon are respected.

    • Testing edge cases like:

      • Long merchant names or memos
      • Transactions with missing data (e.g., no merchant, no amount)
      • Tapping on different interactive elements
    • Visual regression tests to ensure consistent UI across all views

    What alternative solutions did you explore? (Optional)

    An alternative would be to keep separate components and sync styles and logic across them, but this would be more error-prone and increase long-term maintenance costs.


  4. moved this to Second Cohort - CRITICAL in [#whatsnext] #migrateon May 6, 2025
  5. sumo-slonik commented on May 7, 2025

    @sumo-slonik
    Contributor

    Hi, I'm Kuba from SWM, and I'll take care of this.

  6. moved this from Second Cohort - CRITICAL to Second Cohort - MEDIUM or LOW in [#whatsnext] #migrateon May 7, 2025
  7. melvin-bot commented on May 12, 2025

    @melvin-bot

    @sumo-slonik Eep! 4 days overdue now. Issues have feelings too...

  8. 13 remaining items

  9. mountiny commented on May 22, 2025

    @mountiny
    ContributorAuthor

    Both of those demoted and assigned @sumo-slonik and @DylanDylann

  10. added
    Awaiting PaymentAuto-added when associated PR is deployed to production
    and removed on May 23, 2025
  11. changed the title [-][Better Expense Report View] Use the same component for Transaction row in Search / Reports / Inbox[/-] [+][Due for payment 2025-05-30] [Better Expense Report View] Use the same component for Transaction row in Search / Reports / Inbox[/+] on May 23, 2025
  12. melvin-bot commented on May 23, 2025

    @melvin-bot

    Reviewing label has been removed, please complete the "BugZero Checklist".

  13. melvin-bot commented on May 23, 2025

    @melvin-bot

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.1.50-0 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-05-30. 🎊

    For reference, here are some details about the assignees on this issue:

  14. melvin-bot commented on May 23, 2025

    @melvin-bot

    @DylanDylann @trjExpensify @DylanDylann 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]

  15. trjExpensify commented on May 29, 2025

    @trjExpensify
    Contributor

    This is on prod, so I think we can close it right?

  16. trjExpensify commented on May 30, 2025

    @trjExpensify
    Contributor

    Closing then.

  17. moved this from Second Cohort - MEDIUM or LOW to Done in [#whatsnext] #migrateon May 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionBugSomething is broken. Auto assigns a BugZero manager.DailyKSv2

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions