[Payment due @hungvu193] [No QA] Add inbAdminsWel onboarding variant + send MANAGE_TEAM tasks to server without optimistic flash#91263
Conversation
…ithout optimistic flash
|
@hungvu193 Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
@hoangzinh Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
Reviewer Checklist
Screenshots/Videos |
|
@MonilBhavsar Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
🎯 @hungvu193, thanks for reviewing and testing this PR! 🎉 A payment issue will be created for your review once this PR is deployed to production. If payment is not needed (e.g., regression PR review fix etc), react with 👎 to this comment to prevent the payment issue from being created. |
|
🚧 @MonilBhavsar 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! 🧪🧪
|
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/MonilBhavsar in version: 9.3.79-1 🚀
Bundle Size Analysis (Sentry): |
|
No help site changes required. This PR adds the |
|
🚀 Deployed to production by https://github.com/roryabraham in version: 9.3.79-4 🚀
|
|
🤖 Payment issue created: #91475 |

Explanation of Change
This PR is Step 1 of 4 for the
inbAdminsWelonboarding A/B test.What changes:
Add
inbAdminsWelvariant toOnboardingRHPVarianttype andCONST.ONBOARDING_RHP_VARIANT. This variant will be assigned by Auth (Step 3/4) to route eligible MANAGE_TEAM admins to receive a bespoke welcome in the #admins room instead of onboarding task list.Restore tasks for MANAGE_TEAM + send them to the server (
tasks = onboardingMessage.tasks— no longer empty). Tasks are included inguidedSetupDataso the server creates them. This is needed because Step 2 (Web-E PR) will read the variant from the API response and conditionally post the bespoke welcome; tasks must exist on the server for that to work correctly.Remove tasks from client-side optimistic state (
optimisticData,successData,failureDataare empty forshouldUseFollowupsInsteadOfTasksusers). This prevents a "flash of tasks" in the UI before the server responds — the client shows nothing optimistically, and the server is the source of truth for what appears in the #admins room.Gate
hasOutstandingChildTaskon!shouldUseFollowupsInsteadOfTasksso the report isn't prematurely marked as having outstanding child tasks for MANAGE_TEAM users.Navigation:
inbAdminsWelfalls through to the same path ascontrolinnavigateAfterOnboarding—shouldOpenRHPVariantreturns false, so users land on the #admins room. No navigation changes needed.Intermediate state (Step 1 deployed, Step 2 not yet): All MANAGE_TEAM users behave as they do today —
optimisticConciergeReportActionIDis still sent in the API call so Web-E's existing$isNewClientManageTeamcheck still fires. No user-visible change until Step 2 deploys.Fixed Issues
Part of https://github.com/Expensify/Expensify/issues/637600
PROPOSAL:
Tests
This is a purely logic/data-flow change with no UI visible until Steps 2–4 are deployed. The existing test suite covers the behavior:
npm run test -- --testPathPattern="ReportUtilsTest|navigateAfterOnboardingTest"— all 940 tests passinbAdminsWelconstant test and navigation routing test passguidedSetupData.length === 1(task sent to server) with no optimistic dataOffline tests
No offline-specific behavior change — the same Onyx update pattern applies (no optimistic data for MANAGE_TEAM, server is source of truth).
QA Steps
[No QA] — No user-visible change until Steps 2–4 deploy. This PR only wires up the client-side data plumbing and variant constant.
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
N/A — no UI change in this step
Android: mWeb Chrome
N/A — no UI change in this step
iOS: Native
N/A — no UI change in this step
iOS: mWeb Safari
N/A — no UI change in this step
MacOS: Chrome / Safari