Repository navigation
Closed
Labels
Awaiting PaymentAuto-added when associated PR is deployed to productionAuto-added when associated PR is deployed to productionDailyKSv2KSv2
Description
Navigation After Transition
Refer to README.md for more information what's the overall strategy and why we're migrating away from InteractionManager.runAfterInteractions.
Strategy
Use Navigation.navigate/goBack/dismissModal({afterTransition: callback})
Every usage in this file defers work until after a screen/modal transition completes. Replace each InteractionManager.runAfterInteractions() call with the afterTransition option available on Navigation methods.
TransitionTracker.runAfterTransitions() should never be called directly — it is already wired into Navigation.ts internally.
| File | Line | Current | Migration | PR |
|---|---|---|---|---|
IOU/index.ts |
6374 | removeDraftTransactions() after split bill |
Pass as afterTransition to the navigation call in handleNavigateAfterExpenseCreate |
#61574 |
IOU/index.ts |
6501 | removeDraftTransaction() after per diem |
Same — thread through navigation | #54760 |
IOU/index.ts |
6834 | removeDraftTransactions() after distance request |
Same | #78109 |
IOU/index.ts |
7522 | removeDraftTransaction() |
Same | #53852 |
IOU/index.ts |
7613 | removeDraftTransaction() |
Same | #51940 |
IOU/index.ts |
8281 | removeDraftTransaction() |
Same | #51940 |
IOU/index.ts |
8539 | removeDraftTransaction() |
Same | #51940 |
IOU/index.ts |
9059 | Clear draft transaction data | Same | #51940 |
IOU/index.ts |
14208 | removeDraftSplitTransaction() |
Same | #79648 |
IOU/SendInvoice.ts |
787 | removeDraftTransaction() after invoice |
Same | #78512 |
Task.ts |
319 | clearOutTaskInfo() + dismissModalWithReport |
Use dismissModalWithReport({afterTransition: () => clearOutTaskInfo()}) |
#57864 |
ConfirmationStep.tsx |
76 | clearAssignCardStepAndData() after dismissModal() |
Use Navigation.dismissModal({afterTransition: () => clearAssignCardStepAndData()}) |
#58630 |
TwoFactorAuthActions.ts |
28 | clearTwoFactorAuthData() after goBack() |
Use Navigation.goBack({afterTransition: () => clearTwoFactorAuthData()}) |
#54404 |
Report/index.ts |
1176 | clearGroupChat() during creation |
Use Navigation.afterTransition on the subsequent navigation |
#57864 |
Report/index.ts |
1909 | Clear report data | Navigation afterTransition | #47033 |
Report/index.ts |
3328 | deleteReport() after goBack()/popToSidebar() |
Navigation.goBack({afterTransition: () => deleteReport()}) |
#66890 |
Report/index.ts |
5814 | Clear report data | Navigation afterTransition | #66890 |
MoneyRequestReportView.tsx |
137 | removeFailedReport() after goBackFromSearchMoneyRequest() |
Thread afterTransition through goBack | #59386 |
ReportScreen.tsx |
493 | Clear deleteTransactionNavigateBackUrl |
Navigation.afterTransition (post-navigation cleanup) |
#52740 |
ReportScreen.tsx |
681 | setShouldShowComposeInput(true) on mount |
Navigation.afterTransition (show after screen entry) |
#38255 |
ReportScreen.tsx |
884 | Subscribe to report leaving events | Navigation.afterTransition (after report screen loads) |
#30269 |
ReportActionsView.tsx |
286 | Set navigatingToLinkedMessage state |
Navigation.afterTransition then setTimeout(10) |
#30269 |
BaseReportActionContextMenu.tsx |
317 | signOutAndRedirectToSignIn() after hiding menu |
Use context menu's hideContextMenu callback with afterTransition |
#33715 |
PureReportActionItem.tsx |
1740 | Sign out and redirect | Navigation.navigate({afterTransition}) or requestAnimationFrame |
#52948 |
MoneyReportHeader.tsx |
1503 | Delete transaction after nav setup | Navigation.goBack({afterTransition: () => deleteTransactions()}) |
#74605 |
MoneyReportHeader.tsx |
1526 | Delete report after goBack | Navigation.goBack({afterTransition: () => deleteAppReport()}) |
#79539 |
StatusPage.tsx |
136 | clearDraftCustomStatus() + navigate |
Remove navigateBackToPreviousScreenTask and use Navigation.goBack({afterTransition: () => clearDraft()}) |
#40364 |
StatusPage.tsx |
157 | Navigate back after status action | Remove navigateBackToPreviousScreenTask and use Navigation.goBack({afterTransition}) |
#40364 |
TwoFactorAuth/VerifyPage.tsx |
79 | 2FA verify navigation | Investigate if InteractionManager is needed | #67762 |
DebugReportActionPage.tsx |
69 | Defer deletion during nav | Use Navigation.goBack({afterTransition: () => deleteAction()}) |
#53655 |
DebugTransactionPage.tsx |
65 | Defer transaction deletion | Use Navigation.goBack({afterTransition: () => deleteTx()}) |
#53655 |
DebugTransactionViolationPage.tsx |
53 | Defer violation deletion | Use Navigation.goBack({afterTransition: () => deleteViolation()}) |
#53969 |
AddUnreportedExpenseFooter.tsx |
57 | Bulk convert after dismissToSuperWideRHP() |
Use Navigation.dismissToSuperWideRHP({afterTransition: () => convert()}) |
#79328 |
RightModalNavigator.tsx |
130, 198 | Save scroll offsets / clear 2FA | Use Navigation.afterTransition in the navigator |
#69531, #79473 |
NetSuiteImportAddCustomSegmentContent.tsx |
51 | NetSuite segment navigation | Navigation afterTransition | #51109 |
NetSuiteImportAddCustomListContent.tsx |
48 | NetSuite list navigation | Navigation afterTransition | #51109 |
Issue Owner
Current Issue Owner: @mallenexpensifyMetadata
Metadata
Labels
Awaiting PaymentAuto-added when associated PR is deployed to productionAuto-added when associated PR is deployed to productionDailyKSv2KSv2
Type
Projects
- StatusShow more project fieldsDone
Activity
blazejkustra commentedon Feb 20, 2026
Please do not post proposals, since this will be implemented by Software Mansion team or later distributed to externals. Thank you!
melvin-bot commentedon May 18, 2026
@blazejkustra, this Monthly task hasn't been acted upon in 6 weeks; closing.
If you disagree, feel encouraged to reopen it -- but pick your least important issue to close instead.
melvin-bot commentedon May 28, 2026
Triggered auto assignment to @luacmartins, see https://stackoverflow.com/c/expensify/questions/7972 for more details.
melvin-bot commentedon May 29, 2026
If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.
If a regression has occurred and you are the assigned CM follow the instructions here.
If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.
49 remaining items
[-][Due for payment 2026-06-19] [Due for payment 2026-06-18] [Due for payment 2026-06-17] [Due for payment 2026-06-09] [BATCH 2] Migrate Navigation usage[/-][+][Due for payment 2026-06-19] [BATCH 2] Migrate Navigation usage[/+]melvin-bot commentedon Jun 17, 2026
@daledah Huh... This is 4 days overdue. Who can take care of this?
[-][Due for payment 2026-06-19] [BATCH 2] Migrate Navigation usage[/-][+][BATCH 2] Migrate Navigation usage[/+]mallenexpensify commentedon Jun 18, 2026
Bunch of PRs linked here, Please comment and tag me if/when payment is due, thx
daledah commentedon Jun 19, 2026
Hi @collectioneur, I've done a thorough check across the codebase and confirmed that all 35 items listed in the issue table no longer use InteractionManager.runAfterInteractions. All migrations have been completed through the 3 PRs.
Can you confirm that this issue is fully resolved so we can process the payment and close it?
collectioneur commentedon Jun 19, 2026
Yes, this issue can be closed 🙂
daledah commentedon Jun 22, 2026
@mallenexpensify Please process the payment here because the third PR was merged two weeks ago and everything has been resolved.
mallenexpensify commentedon Jun 22, 2026
@daledah how much is due? I see you mentione 3 PRs, I also see multiple deploy blockers mentioned above.
[-][BATCH 2] Migrate Navigation usage[/-][+][Due for Payment 2026-06-22][BATCH 2] Migrate Navigation usage[/+]daledah commentedon Jun 23, 2026
We have 3 PRs for this issue, and only 1 confirmed regression: #92047
As for the other 2 linked regressions, their root causes are unrelated to our PRs, so I don't think they should be counted against this implementation.
Given that, I think the compensation should be $625 (250 × 2 + 125).
mallenexpensify commentedon Jun 23, 2026
Payment Summary
Contributor+: @daledah due $625 via NewDot
Thx. If anyone disagrees, comment/reopen.
quinthar commentedon Jun 29, 2026
Approved $625 to @daledah