Skip to content

[Due for payment 2025-10-06] [$250] [Selectors] Bundle B (~19) #70402

Description

@mountiny

Parent

This is a child of #70272

Background

Inline selectors passed to useOnyx break memoization by creating a new function identity every render, causing unnecessary recomputations and re-renders. We’re standardizing selectors as first-class citizens to unlock recent useOnyx memoization improvements.

Goal

Refactor all inline selectors in this scope to one of:

  • Shared selector: lives in src/libs/onyx/selectors/<domain>/... when reused across components.
  • Local selector: defined outside the component (same file) if only used by that file.
  • Contextual selector: created with useCallback (inside the component) only when it needs component data; dependency array must include that data.

Example implementation for the Session keys: #70264

Keys to handle

  • Report name value pairs - ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS — 9
  • Personal details - ONYXKEYS.PERSONAL_DETAILS_LIST — 3
  • Last payment method - ONYXKEYS.NVP_LAST_PAYMENT_METHOD — 2
  • Transaction violations - ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS — 2
  • Network - ONYXKEYS.NETWORK — 1
  • Blocked from chat - ONYXKEYS.NVP_BLOCKED_FROM_CHAT — 1
  • Report metadata - ONYXKEYS.COLLECTION.REPORT_METADATA — 1
Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~021968348623335861237
  • Upwork Job ID: 1968348623335861237
  • Last Price Increase: 2025-09-17
Issue OwnerCurrent Issue Owner: @
Issue OwnerCurrent Issue Owner: @

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionBugSomething is broken. Auto assigns a BugZero manager.DailyKSv2ExternalAdded to denote the issue can be worked on by a contributor

Type

No type

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions