Migrate ConnectToQuickbooksOnlineFlow and ConnectToXeroFlow to @react-navigation modal screens#92512
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
🚧 @mountiny has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
|
@codex review |
|
Codex Review: Didn't find any major issues. Breezy! ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
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". |
…-quickbooks-to-react-modal-screen
…-quickbooks-to-react-modal-screen
…-quickbooks-to-react-modal-screen
jmusial
left a comment
There was a problem hiding this comment.
Looking good, just the useEffect fix and 🚀
…remove unnecesary gobacks
|
Yeah I think we should fix those 2 issues before merging |
Screen.Recording.2026-06-29.at.12.27.40.movfixed this bug as well as the backdrop and xero crash ones |
|
@parasharrajat can you please retest? thanks |
|
Okay, I've investigated further and it turns out it's not that trivial to have a native-only implementation for the RHP. The current solution consists of two
TL;DR:
Let me know whether I should work on this further, or whether it's acceptable that:
|
|
all done 🚀 |
…-quickbooks-to-react-modal-screen
|
To the best of my knowledge the failing tests are not coming from this PR, when the situation stabilizes I will re-merge main and rerun the tests, in the meantime it is ready to be reviewed. |
|
all checks pass now |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 mountiny has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/mountiny in version: 9.4.26-0 🚀
|
|
🤖 I reviewed this PR against the help site files under Why: This PR is an internal navigation/architecture refactor. It migrates the QuickBooks Online and Xero connect flows from an inline fullscreen The two relevant help articles document the flow only at the user level, and both remain accurate:
Since no documented behavior changes, I did not create a draft help site PR. If you'd like a docs update anyway (e.g. new screenshots reflecting the redesigned setup screen), let me know and I'll open one. |
|
🚀 Deployed to production by https://github.com/grgia in version: 9.4.27-2 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
Migrates the QuickBooks Online and Xero connect flows from rendering an inline fullscreen
Modal/WebViewinsideConnectTo*Flowcomponents to dedicated RHP setup screens. AddedQuickbooksOnlineSetupPageandXeroSetupPage(with platform-specific variants: native renders the WebView in aScreenWrapper, web usesopenLink+goBack). Wired up new routes, screens, navigators, linking config, and types.Fixed Issues
$ #90476
PROPOSAL:
Tests
Open a workspace → Accounting.
Click Connect (or Set up) on the QuickBooks Online integration.
On native (iOS/Android), verify the app navigates to a dedicated setup screen showing the QBO authentication WebView inside a screen with a header and back button.
On web/desktop, verify the QBO setup link opens in a new tab and the app navigates back to the Accounting page.
Verify that Taxes are disabled in the LHN after initiating the QBO connection.
Verify that no errors appear in the JS console.
Open a workspace → Accounting.
Click Connect (or Set up) on the Xero integration.
If 2FA is not enabled on the account, verify the "Two-factor authentication required" modal appears; tapping Cancel navigates back, and tapping the action navigates to the 2FA setup route.
If 2FA is enabled, on native verify the app navigates to a dedicated setup screen showing the Xero authentication WebView; on web/desktop verify the Xero setup link opens in a new tab and the app navigates back.
Verify that no errors appear in the JS console.
With the app deep-linking enabled, open
workspaces/<policyID>/accounting/quickbooks-online/setupandworkspaces/<policyID>/accounting/xero/setupdirectly.Verify each route resolves to the correct setup screen and behaves as in the tests above (from both a logged-in and logged-out account).
Offline tests
In offline mode the buttons for adding the accounting connections are disabled so no tests.
QA Steps
Same as tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))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.ScrollViewcomponent to make it scrollable when more elements are added to the page.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_quickbooks.mov
android_xero.mov
Android: mWeb Chrome
iOS: Native
ios_quickbooks.mov
ios_xero.mov
iOS: mWeb Safari
MacOS: Chrome / Safari
web_quickbooks.mp4
web_xero.mov