Skip to content

[Performance] Pre-mount new expense destinations behind confirmation RHP - #97874

Open
JakubKorytko wants to merge 28 commits into
Expensify:mainfrom
software-mansion-labs:korytko/rhp-navigation-improvements
Open

[Performance] Pre-mount new expense destinations behind confirmation RHP#97874
JakubKorytko wants to merge 28 commits into
Expensify:mainfrom
software-mansion-labs:korytko/rhp-navigation-improvements

Conversation

@JakubKorytko

@JakubKorytko JakubKorytko commented Aug 5, 2026

Copy link
Copy Markdown
Member

Explanation of Change

Improves confirmation RHP destination pre-mounting for new 1:1 chats and employer workspaces. It reuses stable optimistic report IDs, safely promotes draft reports for rendering, suppresses premature report fetching, cleans interrupted promotions, and inserts a neutral buffer route under the RHP so a native swipe-dismiss reveals it instead of flashing the pre-mounted destination.

Fixed Issues

$ #98139
PROPOSAL: N/A

Tests

  1. On a narrow layout, use an account that has no existing chat with another user, click the global +, select Create expense, enter an amount, and choose that user as the recipient.
  2. On the confirmation page, click Create expense.
  3. Verify that the new recipient chat opens with the created expense without flashing the previous page. A brief loading state is fine; getting stuck on it is not.

  1. On a narrow layout, use an account with the SUBMIT_2026 beta enabled and no existing workspace, open a tracked expense in the self chat, and click Submit to my employer.
  2. Complete the expense details and click Create expense on the confirmation page.
  3. Verify that the newly created workspace expense chat opens immediately with the expense. A brief loading state is fine; getting stuck on it is not.

  1. On iOS native, use the QAB Create expense entry point for 1:1 expense - this lands directly on a single-screen RHP (no participants/amount steps stacked underneath), so a swipe from the screen edge dismisses the whole RHP instead of popping one inner step back.
  2. Before submitting, swipe away the RHP from the screen edge.
  3. Verify the swipe dismisses back to where you started, without ever flashing the pre-mounted destination underneath.
  4. Repeat via the global + flow and swipe on the confirmation screen instead: verify it just pops back to the amount step (RHP stays open).
  5. Use the visible back button to leave either flow instead of swiping, then open it again and submit the expense.
  6. Verify that backing out does not leave a speculative report visible, and the later submission opens the correct destination.

Offline tests

  1. On a narrow layout, start the new-recipient scenario from the Tests section and reach the confirmation page while online.
  2. Disable the network connection, then click Create expense.
  3. Verify that the new chat opens with the optimistic expense without flashing the previous page or remaining on a loading screen, and that the expense syncs after reconnecting.

QA Steps

Same as tests

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I followed proper code patterns (see Reviewing the code)
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))
  • If new assets were added or existing ones were modified, I verified that:
    • The assets are optimized and compressed (for SVG files, run npm run compress-svg)
    • The assets load correctly across all supported platforms.
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
Android.mov
Android: mWeb Chrome
iOS: Native
iOS.mov
iOS: mWeb Safari
MacOS: Chrome / Safari

@JakubKorytko

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 946460a7b6

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/pages/iou/request/step/IOURequestStepConfirmation.tsx Outdated
@codecov

codecov Bot commented Aug 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ Changes either increased or maintained existing code coverage, great job!

Files with missing lines Coverage Δ
src/ONYXKEYS.ts 100.00% <ø> (ø)
src/SCREENS.ts 100.00% <ø> (ø)
src/libs/ExportOnyxState/common.ts 80.95% <ø> (ø)
src/libs/IOUUtils.ts 80.37% <100.00%> (+0.30%) ⬆️
src/libs/Navigation/AppNavigator/AuthScreens.tsx 83.50% <100.00%> (+0.34%) ⬆️
...ateRootStackNavigator/GetStateForActionHandlers.ts 75.79% <100.00%> (+9.95%) ⬆️
src/libs/actions/Report/index.ts 71.56% <100.00%> (+0.16%) ⬆️
src/libs/cleanupPromotedDraftReports.ts 100.00% <100.00%> (ø)
src/pages/Share/SubmitDetailsPage.tsx 90.27% <ø> (ø)
src/pages/inbox/ReportFetchHandler.tsx 87.92% <100.00%> (+0.61%) ⬆️
... and 8 more
... and 25 files with indirect coverage changes

@JakubKorytko

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

Reviewed commit: d77efce009

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@JakubKorytko
JakubKorytko force-pushed the korytko/rhp-navigation-improvements branch from d77efce to c5ccc51 Compare August 5, 2026 15:47
@JakubKorytko
JakubKorytko force-pushed the korytko/rhp-navigation-improvements branch from 17fd0cb to ac63040 Compare August 10, 2026 13:18
@JakubKorytko

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ac630400e6

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/pages/iou/request/step/IOURequestStepConfirmation.tsx Outdated
@JakubKorytko

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 71d480f11f

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/pages/iou/request/step/IOURequestStepConfirmation.tsx Outdated
@JakubKorytko JakubKorytko changed the title [WIP] [Performance] Pre-mount new expense destinations behind confirmation RHP [Performance] Pre-mount new expense destinations behind confirmation RHP Aug 10, 2026
@JakubKorytko
JakubKorytko marked this pull request as ready for review August 10, 2026 14:11
@JakubKorytko
JakubKorytko requested review from a team as code owners August 10, 2026 14:11
@melvin-bot
melvin-bot Bot requested review from gijoe0295 and removed request for a team August 10, 2026 14:11
@trjExpensify
trjExpensify removed their request for review August 11, 2026 22:32
@JakubKorytko

Copy link
Copy Markdown
Member Author

Addressed @MelvinBot concerns ✅

@JakubKorytko

Copy link
Copy Markdown
Member Author

❗ For the QA testers

There is a visible "blink" of an RHP after swiping back from the QAB expense creation, this is pre-existing and unrelated to the pre-mounting. There is a pending PR to fix this - #97020

@gijoe0295

gijoe0295 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

On iOS native, use the QAB Create expense entry point for 1:1 expense - this lands directly on a single-screen RHP (no participants/amount steps stacked underneath), so a swipe from the screen edge dismisses the whole RHP instead of popping one inner step back.

I can't swipe back from the QAB create expense flow. It keeps scrolling. This is a bug on prod already. So please update this test step.

Screen.Recording.2026-08-12.at.23.34.02.mov

@gijoe0295

Copy link
Copy Markdown
Contributor

BUG: I can't swipe back from the confirmation step. I keeps re-navigating to the confirmation step.

Screen.Recording.2026-08-12.at.23.39.52.mov

@gijoe0295

Copy link
Copy Markdown
Contributor

Some bugs that my Claude found. Might just be false positives.

Promotion marker cleared before real write can bail

createTransactionAndClearPromotionMarker (IOURequestStepConfirmation.tsx) clears ref + marker, THEN calls createTransaction. But submitExpenses has early returns AFTER that point: if (!participant) return, and batch reject if (requiresLinkedTracked && !transactions.every(...)) return (useExpenseSubmission.ts:404-407). Employer flow IS action === SUBMIT, so linked-tracked reject is reachable in exactly the promoted-draft flow.

Consequence chain: marker gone, ref gone, no optimistic write ran. Unmount cleanup skips (!promotedReportID). Startup cleanup skips (no marker). Speculative policy expense chat row lives in COLLECTION.REPORT forever — phantom report.

Same root cause, second shape: marker-null Onyx.set and real optimistic writes are independent batches. App killed after marker-null persists but before report writes persist = same phantom (draft still exists, marker gone, startup cleanup keyed on marker).

Non-reveal dismiss paths get cancel semantics with buffer live

handleRHPClosedForBuffer treats ANY RHP removal while transaction live as cancel: strips buffer AND pre-inserted destination, resets to origin. Confirm paths that bypass reveal()/clearFullscreenPreInsertedFlag exist:

  • confirmPayment → after pre-insert, Navigation.getTopmostReportId() === payDestinationReportID is always true → sendMoneydismissModalAndOpenReportInInboxTabHelperdismissModalWithReport. No buffer removal anywhere on that path.
  • Per-diem track path dismissModalAndOpenReportInInboxTabHelper(optimisticChatReportID, false, false) (useExpenseSubmission.ts:612).

If buffer was inserted (RHP inner index 0 at pre-insert), successful submit through these paths dismisses RHP → state listener fires → destination stripped → user lands at origin, expense created but chat never shown. Reachability hinges on whether PAY/per-diem can sit at inner index 0 — possibly not today, but invariant "every submit dismiss must go through reveal()" is unenforced and undocumented. At minimum dismissModalWithReport/helper should call clearFullscreenPreInsertedFlag when target equals pre-inserted route, or those flows need explicit coverage.

@gijoe0295 gijoe0295 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor comment cleanups

Comment thread src/SCREENS.ts Outdated
Comment thread src/ROUTES.ts Outdated
Comment thread src/pages/PreMountBufferPage.tsx Outdated
Comment thread src/libs/actions/Report/index.ts Outdated
Comment thread src/libs/actions/Report/index.ts Outdated
Comment thread src/libs/actions/Report/index.ts Outdated
Comment thread src/libs/Navigation/types.ts Outdated
@mountiny
mountiny requested a review from marufsharifi August 12, 2026 16:59
@marufsharifi

marufsharifi commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Reviewer Checklist

  • I have verified the author checklist is complete (all boxes are checked off).
  • I verified the correct issue is linked in the ### Fixed Issues section above
  • I verified testing steps are clear and they cover the changes made in this PR
    • I verified the steps for local testing are in the Tests section
    • I verified the steps for Staging and/or Production testing are in the QA steps section
    • I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
  • I checked that screenshots or videos are included for tests on all platforms
  • I included screenshots or videos for tests on all platforms
  • I verified that the composer does not automatically focus or open the keyboard on mobile unless explicitly intended. This includes checking that returning the app from the background does not unexpectedly open the keyboard.
  • I verified tests pass on all platforms & I tested again on:
    • Android: HybridApp
    • Android: mWeb Chrome
    • iOS: HybridApp
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
  • I verified proper code patterns were followed (see Reviewing the code)
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I verified that this PR follows the guidelines as stated in the Review Guidelines
  • I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • For any bug fix or new feature in this PR, I verified that sufficient unit tests are included to prevent regressions in this flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: HybridApp
Screen.Recording.2026-08-13.at.10.12.42.PM.mov
Android: mWeb Chrome
Recording_20260813_221428.mp4
iOS: HybridApp
Screen.Recording.2026-08-13.at.10.45.47.PM.mov
iOS: mWeb Safari
Screen.Recording.2026-08-13.at.9.27.38.PM.mov
MacOS: Chrome / Safari
Screen.Recording.2026-08-13.at.10.18.09.PM.mov

Comment thread src/pages/iou/request/step/confirmation/useExpenseSubmission.ts
Comment thread src/libs/cleanupPromotedDraftReports.ts Outdated
Comment thread src/pages/inbox/ReportFetchHandler.tsx
Comment thread src/pages/iou/request/step/IOURequestStepConfirmation.tsx Outdated
Comment thread src/pages/iou/request/step/IOURequestStepConfirmation.tsx
@marufsharifi

Copy link
Copy Markdown
Contributor

@MelvinBot Review

@MelvinBot

Copy link
Copy Markdown
Contributor

Review

Solid, carefully-reasoned PR. The behavior is well-motivated, the comments explain why (not just what) throughout, and the new pure helpers + navigation handlers have good unit coverage. I verified the primary web-testable flow end-to-end on a narrow layout and it works as described. Below are the higher-value things to double-check before merge — none are hard blockers.

Verified behavior (narrow web)

On a 375×812 viewport, creating an expense for a brand-new recipient (no prior chat) opens that recipient's 1:1 chat showing the created expense, with only a brief loading state — no flash of the previous page and no stuck loading / not-found. Screenshots below.

Evidence

Confirm page → Create → transient loading (tab bar + bare Back only, not a re-render of the prior Inbox/Concierge screen) → recipient chat with the $25.00 outstanding expense card.

Confirm details page with $25.00 amount and new recipient before tapping Create expense New recipient's chat opened directly showing the created $25.00 outstanding expense

What the PR does

  • Reuses the transaction's stable optimistic reportID for brand-new 1:1 recipients so the pre-mounted destination subscribes to the report that actually gets created (IOUUtils.ts:512, useExpenseSubmission.ts).
  • Promotes the zero-workspace "Submit to my employer" draft report into COLLECTION.REPORT so the pre-mounted screen renders immediately, with a marker + startup cleanup for interrupted promotions.
  • Adds an isPendingCreation route param so ReportFetchHandler skips openReport for a client-only optimistic ID (avoids a 403 → latched not-found page).
  • Inserts a neutral PRE_MOUNT_BUFFER route under the RHP (native only) so a native swipe-dismiss reveals the buffer instead of flashing the pre-mounted destination.

Points worth a second look

1. Native swipe-dismiss guard is untested by CI — needs manual native QA. Nearly all of the buffer machinery is gated behind Platform.OS === 'web' early-returns (buildPreMountBufferRoute, captureBufferTransaction, canNativeSwipeDismissRHP), so the flash-on-swipe fix — the whole point of the buffer — cannot be exercised on web/CI. The PR itself flags that native swipe-back can pop the RHP before JS cleanup runs as a "known limitation without a deterministic fix yet." Please make sure the iOS/Android Tests steps (especially the QAB single-screen-RHP swipe and the back-button-then-resubmit cases) are actually run on device, since that's the only place this logic runs.

2. Startup cleanup can delete the report row — confirm the invariant holds. cleanupPromotedDraftReports.ts:16-17 deletes COLLECTION.REPORT_{id} on startup whenever a surviving promotion marker still has a matching REPORT_DRAFT. The safety of this rests entirely on: "a surviving marker + present draft ⇒ submit never ran, so the row is speculative." That holds because createTransactionAndClearPromotionMarker clears the marker before the real write. The only way to lose a real report is a crash window where the confirmed write persisted but the earlier-queued marker-clear did not and the draft still exists — very unlikely given the ordering, but worth a conscious sign-off since the downside is destroying confirmed data.

3. ROUTES.REPORT_WITH_ID.getRoute now takes 6 positional args. The new isPendingCreation boolean is the 6th positional param, so the caller reads getRoute(destinationReportID, undefined, undefined, undefined, undefined, isOptimisticNewChatDestination) (ROUTES.ts:2116). It's consistent with the existing signature, but that's a lot of undefineds guarding one flag — an options object would read better if you're touching this again. Minor / non-blocking.

4. Module-level bufferTransaction + persistent state listener. The buffer relies on global mutable module state plus a nav state listener re-added per transaction (Navigation.ts:1233). Cleanup paths (removeBufferRouteOnly, handleRHPClosedForBuffer) do unsubscribe and prior listeners are cleared before re-adding, so I don't see a leak — just calling it out as the trickiest state to reason about; rapid open/cancel cycles are the thing to keep an eye on in native QA.

Test coverage

Good coverage on the mechanical pieces: resolveOptimisticChatReportID / getReusableP2PReportID, the buffer insert/remove navigation handlers, getPromotedDraftReportCleanupData, and promoteDraftReportForPreMount. The least-covered, highest-complexity area is the promotion-marker-vs-unmount-cleanup race in IOURequestStepConfirmation.tsx — it's justified in comments but effectively only validated by manual testing. If any of it is unit-testable (e.g. the cleanup effect's decision to preserve vs clear based on submit intent), it'd be worth locking in.

Overall this looks well-engineered and the web happy-path is solid. My main ask is that the native-only swipe/back paths get real on-device verification, since CI can't reach them.

…ffer stripping destination on same-report dismiss
@JakubKorytko

Copy link
Copy Markdown
Member Author

I can't swipe back from the QAB create expense flow. It keeps scrolling. This is a bug on prod already. So please update this test step.

You need to do it fast enough, the best to start swiping just before/after opening animation ends. Also, on the video it seems you are starting the swipe on the frame 😅

BUG: I can't swipe back from the confirmation step. I keeps re-navigating to the confirmation step.

This is due to the simulator itself, it's hard to do it - needs to be almost pixel perfect, keep trying. Not related to code at all.

Also addressed the @gijoe0295 Claude & Melvin comments.

@marufsharifi marufsharifi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code changes looks good, i am still testing.

Comment thread src/pages/iou/request/step/IOURequestStepConfirmation.tsx
Comment thread src/pages/iou/request/step/IOURequestStepConfirmation.tsx
@marufsharifi

Copy link
Copy Markdown
Contributor

@JakubKorytko, could you please merge the main. thanks.

Resolve import conflict in IOUUtilsTest.ts by keeping both ReportAction
(from main) and Participant (from branch).

@marufsharifi marufsharifi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code changes looks good, but some minor suggestions.

Comment thread src/pages/iou/request/step/IOURequestStepConfirmation.tsx Outdated
Comment thread src/libs/Navigation/Navigation.ts Outdated
Comment thread src/components/FullscreenLoadingIndicator.tsx
Comment thread src/libs/Navigation/Navigation.ts
Comment thread src/libs/Navigation/Navigation.ts
Comment thread src/pages/iou/request/step/IOURequestStepConfirmation.tsx
Comment thread src/pages/iou/request/step/IOURequestStepConfirmation.tsx
Comment thread src/pages/inbox/ReportFetchHandler.tsx
Comment thread src/ROUTES.ts
@marufsharifi

Copy link
Copy Markdown
Contributor

@JakubKorytko, could you please merge the main. thanks.

@marufsharifi

Copy link
Copy Markdown
Contributor

@JakubKorytko, could you please check this. thanks.

RF.mp4

@JakubKorytko

Copy link
Copy Markdown
Member Author

Good catch, may you re-test now?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants