Skip to content

[Due for payment 2026-11-03] Members - Error shows up on one of the member rows after bulk changing role to Approve-only #104912

Open

Description

@applause-bot

If you haven’t already, check out our contributing guidelines for onboarding. To join our Slack channel, fill out this form.


Version Number: 9.5.20-0
Reproducible in staging?: Yes
Reproducible in production?: N/A - new feature, doesn't exist in prod
If this was caught during regression testing, add the test name, ID and link from BrowserStack: #102933
Email or phone of affected tester (no customers): jsnoidjosinjdiosj2@gmail.com
Issue reported by: Applause Internal Team
Bug source: Exploratory - Significant User Experience Deterioration
Device used: Mac 26.5 / Chrome
App Component: Workspace Settings

Action Performed:

  1. Go to staging.new.expensify.com
  2. Create a Control workspace.
  3. Go to workspace settings > Members.
  4. Invite two new users to the workspace.
  5. Bulk select both invited members.
  6. Click Change role.
  7. Select Approve-only > Save.

Expected Result:

No error will show up on any of the member row.

Actual Result:

Error shows up on one of the member rows after bulk changing role to Approve-only.

Workaround:

Unknown

Platforms:

  • Android: App
  • Android: mWeb Chrome
  • iOS: App
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome Safari

Screenshots/Videos

Bug7294664_1792779317117.14.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Svetlana Lazutkina
Bug ID: 7294664

Issue OwnerCurrent Issue Owner: @Pujan92

Activity

  1. added
    DeployBlockerCashThis issue or pull request should block deployment
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 23, 2026
  2. applause-bot commented on Oct 23, 2026

    @applause-bot
    Author

    While Applause doesn't embed attachments for this bug, here are the links for quick view:
    https://platform.applause.com/services/links/v1/external/6f842866e8d7f7e09b8b064b5f6b4914d226f2f831cf395e46e423c1dfd0865f

  3. melvin-bot commented on Oct 23, 2026

    @melvin-bot

    You have been assigned to this deploy blocker because you recently merged this PR: #102933

  4. melvin-bot commented on Oct 23, 2026

    @melvin-bot

    @flodnv @Pujan92 you have been assigned to this deploy blocker because you reviewed the offending PR: #102933

  5. melvin-bot commented on Oct 23, 2026

    @melvin-bot

    @ShridharGoel you have been assigned to this deploy blocker because you authored the offending PR: #102933

  6. melvin-bot commented on Oct 23, 2026

    @melvin-bot

    💬 A slack conversation has been started in #expensify-open-source

  7. github-actions commented on Oct 23, 2026

    @github-actions
    Contributor

    👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

    1. Identify the pull request that introduced this issue and revert it.
    2. Find someone who can quickly fix the issue.
    3. Fix the issue yourself.
  8. MelvinBot commented on Oct 23, 2026

    @MelvinBot
    Contributor

    Deploy Blocker Analysis

    Causing PR: [Payment due @Pujan92] Add approve-only workspace role (Expensify/App#102933). It's a frontend bug.

    Root cause: A bulk role change sends one request for all selected members. If the server refuses an Approve-only change, the failure data puts an error on every selected row (Member.ts:651-669). The new modal hook from this PR then clears the error for one email only (useApproveOnlyRoleBlockedModal.ts:50-59). So one row keeps its error.

    Recommended fix: Clear the role error for every member in the refused request, not just blockedRoleChange.email. Another option is to skip the generic failure error when the refusal is a blocked role change. If a fix can't merge in this deploy window, revert the PR. The feature isn't in production yet, so a revert costs users nothing.

    Investigation details
    • Why this PR: It's the only PR in the 9.5.20-0 checklist that adds the Approve-only role, the blocked-role-change modal, and the row-error clearing. It merged 2026-10-23, the same day as the report. Bulk role changes to other roles already worked in earlier releases.
    • Bulk path: WorkspaceMembersRolePage.tsx:106 calls updateWorkspaceMembersRole once with all selected logins. That makes a single API.write (Member.ts:737).
    • Single-member assumption: The BlockedRoleChange type holds one email (BlockedRoleChange.ts). The PR's test steps only cover changing one member from the member details page.
    • Why only one row: If the request had failed for a generic reason, both rows would show the error. An error on exactly one row only fits the single-email clear.
    • Timing risk: The hook waits one microtask before it clears the error, assuming the failure data lands first. Because it runs from a React effect, that order isn't guaranteed. The cleared error could return even for a single member.
    • Not verified: I couldn't see the server's refusal payload. The server seems to refuse Approve-only for brand-new invitees, possibly because of the default-workspace rule. Whether that refusal is intended is a separate backend question. Either way, the App gives inconsistent feedback for bulk changes.

    Next Steps: Reply with @MelvinBot implement this to create a draft PR, or @MelvinBot <your feedback> to refine this analysis.


    view run

  9. m-natarajan commented on Oct 26, 2026

    @m-natarajan

    Mac 26.6 / Chrome
    v9.5.20-5
    "Approve-only" button is no longer available

    Grabando.174.mp4
  10. added and removed
    ReviewingHas a PR in review
    DeployBlockerCashThis issue or pull request should block deployment
    on Oct 26, 2026
  11. changed the title [-]Members - Error shows up on one of the member rows after bulk changing role to Approve-only[/-] [+][Due for payment 2026-11-03] Members - Error shows up on one of the member rows after bulk changing role to Approve-only[/+] on Oct 27, 2026
  12. melvin-bot commented on Oct 27, 2026

    @melvin-bot

    @Pujan92

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.23-3 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:

    If no regressions arise, payment will be issued on 2026-11-03. 🎊

    The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]

  13. melvin-bot commented on Oct 29, 2026

    @melvin-bot

    @Pujan92 Whoops! This issue is 2 days overdue. Let's get this updated quick!

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

Metadata

Metadata

Labels

BugSomething is broken. Auto assigns a BugZero manager.DailyKSv2EngineeringOverdue

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions