[$250] iOS - App crashes after admin change user role from member to admin
If you haven’t already, check out our contributing guidelines for onboarding and email [email protected] to request to join our Slack channel!
Version Number: 9.2.82-0 Reproducible in staging?: Yes Reproducible in production?: Yes If this was caught during regression testing, add the test name, ID and link from BrowserStack: https://test-management.browserstack.com/projects/2219752/folder/13176703/test-cases/41236804 Email or phone of affected tester (no customers): [email protected] Issue reported by: Applause Internal Team Bug source: Regression TC Execution Device used: iPhone 16 Pro / 26.1 App Component: User Settings
Action Performed:
- Open iOS App
- Login and validate new gmail account
- Create new workspace
- Go to WS members and invite new user as member
- Open this user settings and change user role from Member to Admin
Expected Result:
User role can be changed successfully
Actual Result:
App crashes after admin changes user role from Member to Admin
Workaround:
Unknown
Platforms:
- [ ] Android: App
- [ ] Android: mWeb Chrome
- [x] iOS: App
- [ ] iOS: mWeb Safari
- [ ] iOS: mWeb Chrome
- [ ] Windows: Chrome
- [ ] MacOS: Chrome / Safari
Screenshots/Videos
https://github.com/user-attachments/assets/29fc8118-c9b7-4e21-8861-f94b5140955a
Upwork Automation - Do Not Edit
- Upwork Job URL: https://www.upwork.com/jobs/~022002017426943090820
- Upwork Job ID: 2002017426943090820
- Last Price Increase: 2025-12-19
Issue Owner
Current Issue Owner: @alitoshmatov
Triggered auto assignment to @trjExpensify (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details. Please add this bug to a GH project, as outlined in the SO.
Job added to Upwork: https://www.upwork.com/jobs/~022002017426943090820
Triggered auto assignment to Contributor-plus team member for initial proposal review - @alitoshmatov (External)
📣 @EhsanAzish80! 📣 Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork. Please follow these steps:
- Make sure you've read and understood the contributing guidelines.
- Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
- Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
- Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details.
Format:
Contributor details
Your Expensify account email: <REPLACE EMAIL HERE>
Upwork Profile Link: <REPLACE LINK HERE>
Contributor details Your Expensify account email: [email protected] Upwork Profile Link: https://www.upwork.com/freelancers/~01a58f0ad04405fc31?mp_source=share
The crash is triggered by a navigation/state mismatch when the current user’s role is mutated while the same screen tree still assumes the previous permission set. The app navigates or re-renders using invalid route params or missing admin-only data.
Fix approach 1. After changing a member’s role, force a controlled screen reset (navigation stack reset) instead of allowing the current screen to continue rendering. 2. Invalidate and rebuild the User Settings route once the role update is acknowledged. 3. Add a temporary “permission updating” guard state to block rendering until the role change is fully applied. 4. Ensure all admin-only routes validate permissions on entry, not only on initial render.
Validation • Change role Member → Admin • Confirm no crash during transition • Confirm admin UI loads only after reset • Verify behavior across iOS app and mWeb
✅ Contributor details stored successfully. Thank you for contributing to Expensify!
@alitoshmatov Whoops! This issue is 2 days overdue. Let's get this updated quick!
@alitoshmatov Huh... This is 4 days overdue. Who can take care of this?
im not sure what to do am I assigned to this why am I getting notifications
Not reproducible for me.
https://github.com/user-attachments/assets/f111fb0c-3bb1-4b8b-9d51-f07a7e14d895
📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸
@alitoshmatov Still overdue 6 days?! Let's take care of this!
Not reproducible for me
@alitoshmatov 12 days overdue. Walking. Toward. The. Light...
📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸
@alitoshmatov @laurenreidexpensify this issue was created 2 weeks ago. Are we close to approving a proposal? If not, what's blocking us from getting this issue assigned? Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!
Issue not reproducible during KI retests. (First week)