Repository navigation
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
…ntains-operator # Conflicts: # src/hooks/useSearchBulkActions.ts
The draft is shared across bank accounts, so values entered for one bank account were prefilled when enabling Global Reimbursement for another. Co-authored-by: cretadn22 <cretadn22@users.noreply.github.com>
…yStateWorkspaceName Show workspace name in per diem empty state for members
…tegory-popover-add-button Add create button on category dropdown
…ty-docs [No QA] Document the Auditor role in the security philosophy
…yx-store-pr-5-recut Bump Onyx to 3.0.117
…pack-android-fonts-raw Match Metro's Android release assets in Re.Pack
…chBulkActionsDecisionModals Use useDecisionModal for Search bulk actions and SelectionToolbar alerts
…pe on Add existing expense Signed-off-by: krishna2323 <belivethatkg@gmail.com>
The upstream issue was closed as an app concern and neither upstream PR is the fix, so the patch stays across Skia upgrades.
…pie-patch victory-native remove pie patch
…imbursed-search-snapshot [No QA] fix: hide redundant MARKED_REIMBURSED row in Search when sibling PAY
…ocument schema fields
…hoose file stay reachable in landscape Signed-off-by: krishna2323 <belivethatkg@gmail.com>
…cle-part16-navigation-linking-split [NoQA] Fix import/no-cycle - part 16
wrangler looks up the zone before syncing routes, which the CI deploy token cannot do, so the deploy job failed after the Worker was already live. The route stays in place in Cloudflare; wrangler only replaces routes when some are configured.
…am-links [No QA] Note that upstream declined a fix for the Skia sizing patch
…tains-operator [Payment due @truph01] fix: Add Contains / Equal to match type for the Merchant filter [80823]
Allow creation and management of multiple offices
Co-authored-by: Eskalifer1 <Eskalifer1@users.noreply.github.com>
Dismiss action badge pill when composer is expanded
…ts/limit-group-by [NoQA] [Insights polish] Only offer Group by options on Spend over time that fit the Date range
…QuickFilterPopupNative [CP staging] Fix Merchant quick filter popup collapsing on native
[Payment due @linhvovan29546] [No QA] Add WorkspaceAgentsPage
…dSearchResultsData Guard search snapshot data reads that crash while a search is loading
…pload-retry-track-expense Add Try again logic for track expense flow
…ntHelpDocs [No QA] Update AI Agent help docs
Remove unsafe type assertions from deployment and UI flows
[Part 1.6] Remove Onyx.connect(ONYXKEYS.SESSION) in ReportActionsUtils: thread currentUserAccountID through getReimbursedMessage- Expensify#99826
…8389-admins-merge [Payment due @daledah] Allow admins to merge card + cash expenses across draft reports
…isplayName [No QA] Docs updates for E/A#100727 Document how admins set a member's display name
[Part 2.8] Remove Onyx.connect(ONYXKEYS.SESSION) in ReportActionsUtils: thread currentUserAccountID through isWhisperActionTargetedToOthers
…dTransactionsHelpDocs [No QA] Update help docs for Release 1: Add pending BYOC transactions (Plaid)
…geIntacctInactiveUserArticle [No QA] Add INT133 help article for inactive Sage Intacct web services user
…eWorkspacePlanAdminPermissions [No QA] Update help articles: any Workspace Admin can change the workspace plan
Co-authored-by: dmkt9 <dmkt9@users.noreply.github.com>
…ntReportMembersInExpenseThread
…PickerLandscape
…edirectToHome Redirect to Home instead of Inbox after a share error
…ows-item-level-useonyx # Conflicts: # src/components/MoneyRequestReportView/MoneyRequestReportTransactionItem.tsx
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.
Explanation of Change
This targets the Onyx store bump in Expensify#98956.
FlashList re-runs
renderTransactionListItemfor every transaction row on almost any list render, and the row component isn't memoized. So every row re-rendered on a write to one transaction, a new comment on the report, or an unrelated personal details write, even when that row's data didn't change. The list also handed every row a fresh empty cards object, press and toggle handlers that changed with click-time data, and a new columns array.The row now takes a transaction ID, reads its transaction and violations by member key, gets its card from the existing card list context, and passes explicit props to its body, so React Compiler reuses the body element when nothing for that row changed. The list no longer computes violations; the visibility filter moved to
getVisibleReportRowViolations. Row props are stable: a shared empty cards object, press and toggle handlers called through refs, and the columns array kept while the visible columns are the same.With 10 transactions, the heavy row component re-renders 1 time instead of 10 for a write to one transaction or a violation on one transaction, and 0 times instead of 10 for a new comment or an unrelated personal details write. Timed with reassure, the violation case goes from 221.0 ms to 172.4 ms. The other cases are 6 to 9% faster, within noise at this row count. Writes to the report total, the policy, its categories and the card list still re-render every row, because all rows receive the same changed object.
The new perf test overrides the global Reanimated mock's
useAnimatedStyleto return one object per component. The global mock returns a new object on every render, while real Reanimated returns a stable handle, so without the override no row can skip a render in tests.Fixed Issues
$ https://github.com/callstack-internal/expensify-issues/issues/3039
PROPOSAL:
Tests
Offline tests
QA Steps
Same as tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari