Skip to content

Deploy Checklist: New Expensify 2026-10-23 #104870

Open

Description

@OSBotify

Release Version: 9.5.20-5
Compare Changes: production...staging
Mobile-Expensify Changes: https://github.com/Expensify/Mobile-Expensify/compare/production...staging

This release contains changes from the following pull requests:

Mobile-Expensify PRs:

Internal QA:

Deploy Blockers:

Chronologically ordered merged PRs (oldest first)
  1. [Payment due @huult] Implement AddToDigitalWallet MFA scenario #104179
  2. [No QA] Recycle Jest workers past 2GB to stop CI OOM kills #104639
  3. Part 16c-1 - Add optional delegateAccountID to the openReport param chain #103899
  4. [Payment due @marufsharifi] Show Concierge explain link on cross-border reimbursed entries #102905
  5. Move hold/reject educational modals to the global modal stack #103709
  6. [NoQA] Make the Reassure perf check's trigger readable and correct #101868
  7. Part 5 - Audit usage of Str.removeSMSDomain #102902
  8. Add imported vendor enable and disable controls #103549
  9. Reapply "Add a More menu option to switch single-expense reports between expense view and table view" #103703
  10. Stop the app review prompt from reappearing after the user answers it #102904
  11. [No QA] Update help docs for Release 1: Stand up a baseline Insights page #102832
  12. Remove deprecatedAllTransactions from hasExpenses #103968
  13. Add search to the workspace picker when there are 12 or more workspaces #104526
  14. fix: Merchant name changes save on an expense, but the Reports tab continues to show the old merchant name. #104450
  15. refactor: remove unsafe assertions from attachment, emoji and report-field components #104134
  16. Map animations improvements #103582
  17. Remove unsafe assertions from emoji menus, room creation, and card settlement #103920
  18. Remove onyx connect for the key: ONYXKEYS.PERSONAL_DETAILS_LIST in Parser lib - Part 2 #103840
  19. [No QA] Docs updates for E/A#103309 Add declined search operator for rejected expenses and reports #104383
  20. [No QA] Docs updates for E/A#94096 Note Plaid company card balance and remaining limit #103990
  21. [No QA] Docs updates for E/A#104128 Add Guest role to Managing Workspace Members article #104385
  22. Center the LHN avatar tooltip on the avatar #104512
  23. [No QA] Fix typecheck on main #104672
  24. [Payment due @aimane-chnaif] Force data refresh for the manual QBD sync action #104592
  25. Add Append custom tag list for accounting-connected workspaces on the indirectTagUploads beta #103359
  26. Use the original file name when downloading chat videos #104072
  27. [Payment due @situchan] Updates to authtokens in url #104552
  28. Fix - Android-Expense-Report name shows 'Chat Report' briefly on expense opened offline via growl #103753
  29. [No QA] Mock useLoadPolicyCategories in CategoryPickerTest to fix failing test #104711
  30. Allow replacing a manual expense receipt while the backend scans it #104215
  31. fix: "Find Member" input and "Filters" button are moved while resizing members table #104588
  32. [Payment due @nkdengineer] Set user-level office arrangements #104344
  33. [CP Staging] Revert "Reapply "Add a More menu option to switch single-expense reports between expense view and table view"" #104661
  34. Mobile-Expensify submodule update to 9.5.16-1 — Adhoc Build
  35. [No QA] Update list-row Onyx rules: PERF-3, PERF-11, new PERF-21 and PERF-22 #104593
  36. [No QA] perf: record source tab and preload wait on the Inbox tab span #104567
  37. [No QA] add comprehensive layout and responsiveness tests for NumericInput #104544
  38. perf: memoize Search column size options so leaving Spend doesn't re-render every row #104716
  39. Mobile-Expensify submodule update to d34f344 — Adhoc Build
    ↳ https://github.com/Expensify/Mobile-Expensify/pull/14194
  40. [NO QA] Use Consolidated Travel Billing in Campfire and DualEntry settings #104518
  41. Bump react-native-wallet to 0.1.41 #103625
  42. [No QA] Upgrade Bun to 1.4.4 #104724
  43. [No QA] fix(scripts): retry failed dependency patches #104737
  44. [Payment due @Ollyws] Upgrade awesome-phonenumber to 6.11.0 so newer US area codes like 983 validate #104372
  45. [Payment due @ZhenjaHorbach] [No QA] [Wise] Fix DynamicForm accessibility issues #104105
  46. Delete office location after the edit panel closes to avoid a Not here flash #104580
  47. [NoQA] [Insights] Only send GetInsights snapshot hashes for charts the user can see #104545
  48. Keep the report subtree mounted when the linked action param changes #104381
  49. Scan - Unable to create scan expense without merchant in 1:1 chat #103074
  50. [NoQA] [Insights] Fix console warnings on Insights and Home charts #104578
  51. Gate task assignee edit selection behind a Save button (a11y On Input, PR 15) #101686
  52. Show nights and nightly rate under Category for multi-night reservation expenses #104310
  53. [CFI] Payment history: Activity list with the active user count #104325
  54. [No QA] Bump reassure to 1.6.1 to fix simple-git Dependabot alerts #104656
  55. [NO QA] Remove deprecated getLinkedTransaction from getReportPreviewReportActionMessage #103992
  56. 104404 Add TravelApproval beta and Spend Travel section with Trips #104536
  57. [Payment due @situchan] [cp staging] Update the triggers for SetRule #104779
  58. [No QA] Return 404 when the Cloudflare Worker's previous builds bucket can't be read #104769
  59. Mobile-Expensify submodule update to 9.5.16-2 — Adhoc Build
  60. Mobile-Expensify submodule update to 9.5.16-3 — Adhoc Build
  61. Remove the original expense from expanded group snapshots when splitting in group-by views #102692
  62. Mobile-Expensify submodule update to 9.5.17-0 — Adhoc Build
  63. Mobile-Expensify submodule update to 9.5.18-0 — Adhoc Build
  64. [CP Staging] Keep NetSuite OAuth upgrade option visible for TBA connections #104777
  65. Mobile-Expensify submodule update to 9.5.18-1 — Adhoc Build
  66. Upgrade react-native-vision-camera from v4 to v5 #102898
  67. [Payment due @linhvovan29546] Exclude non-manageable agents from workspace invite list #104110
  68. Disable Sentry TurboModuleContext integration #103900
  69. Make the sections list keyExtractor handle a missing item #104311
  70. Mobile-Expensify submodule update to a9f2423 — Adhoc Build
    ↳ https://github.com/Expensify/Mobile-Expensify/pull/14182
  71. [No QA] [Performance] Wide pre-mount 4/5: pre-mount lifecycle #103975
  72. Show letter avatars for new emails in the invite member list #104732
  73. [Part 2.7] Remove Onyx.connect(ONYXKEYS.SESSION) in ReportActionsUtils: thread currentUserAccountID through isWhisperActionTargetedToOthers #102397
  74. Skip already escaped colons when escaping tag names #104305
  75. Display localized workspace archive and unarchive change logs #104019
  76. Treat first eligible business bank account as invoice default when no… #103485
  77. Add Business Central multi-card account export settings #104189
  78. [No-QA] Remove unsafe assertions from reports, validation, and payment/card actions #104087
  79. [No QA] Serve the web build's Brotli 11 twins from the Cloudflare Worker #104493
  80. Mobile-Expensify submodule update to 9.5.18-2 — Adhoc Build
  81. Move LHN row data reads into the rows #104196
  82. [No QA] Implement Hermes version check for our custom artifacts #103317
  83. Scroll New rule to the describe box when it gets focus #104684
  84. Show another user's full unreported expense tag in a single Tag row #104700
  85. Mobile-Expensify submodule update to bf46249 — Adhoc Build
    ↳ https://github.com/Expensify/Mobile-Expensify/pull/14197
  86. [No QA] Block compromised Java certificates in CI #104803
  87. [Payment due @suneox] fix: stop sending an empty email to BE when updating member custom fields #104101
  88. Migrate attachment carousel and MultiGestureCanvas gestures to Gesture Handler 3 hooks #103461
  89. Restore inline editing of the Expensify Card name #103894
  90. [NO QA] Rename the ZohoBooks Travel Billing commands #104784
  91. Keep edited file attachments laid out as cards #101717
  92. [Payment due @mkhutornyi] Show a status modal for Select all bulk actions #102616
  93. [Payment due @ahmedGaber93] Send the full policy snapshot version with OpenReport #102757
  94. perf: make Search rows read their own focus #104734
  95. perf: Keep Search row selection actions stable #104739
  96. [Payment due @mkhutornyi] Fix rules-based approval workflows so over-limit approvers go AFTER the approver in its step #104835
  97. Add bulk update start date for Company Card #102121
  98. Bump react-native-web to 0.21.4 #104487
  99. [Payment due @Pujan92] Add approve-only workspace role #102933
  100. [NO QA] Rename TravelInvoicing translation keys to TravelBilling #104787
  101. [NO QA] Rename the Consolidated Travel Billing accounting page URLs #104785
  102. Show Cash accruals and Bank reconciliation to Payments Admins #104783
  103. [Payment due @Pujan92] [No QA] Update shell-quote to 1.12.0 #104173
  104. Mobile-Expensify submodule update to 9.5.19-0 — Adhoc Build
  105. Mobile-Expensify submodule update to 9.5.20-0 — Adhoc Build
  106. [CP Staging] Push errors when vendor enablement changes #104898
  107. Mobile-Expensify submodule update to 9.5.20-1 — 029183c
  108. [CP Staging] Exclude disabled vendors from rules vendor picker #104895
  109. Mobile-Expensify submodule update to 9.5.20-2 — 359eaa1
  110. [CP Staging] fix: Downscale oversized in-app camera photos before use #104979
  111. Mobile-Expensify submodule update to 9.5.20-3 — 5aa5c2f
  112. Mobile-Expensify submodule update to 9.5.20-4 — 0dd97f8
  113. Temporarily block approve-only role assignment #104952
  114. Mobile-Expensify submodule update to 9.5.20-5 — 3e93d0e
  115. Remove the describeRule beta #104861

Deployer verifications:

  • I checked Sentry for this release version and verified that this release does not introduce any new crashes. More detailed instructions on this verification can be found here.
  • I checked Sentry for the previous release version and verified that the release did not introduce any new crashes. Because mobile deploys use a phased rollout, completing this checklist will deploy the previous release version to 100% of users. More detailed instructions on this verification can be found here.
  • I checked GitHub Status and verified there is no reported incident with Actions.
    cc @Expensify/applauseleads

Activity

  1. rafecolton commented on Oct 23, 2026

    @rafecolton
    Member

    Currently block testing #104179 until 9.5.20 becomes available in TestFlight on iOS

  2. rafecolton commented on Oct 23, 2026

    @rafecolton
    Member

    #104179 passes - more here

  3. removed their assignment
    on Oct 23, 2026
  4. IuliiaHerets commented on Oct 23, 2026

    @IuliiaHerets

    Regression progress is at 55%

    PRs Failing:
    #104019 faced on Web
    #104344 faced on Web
    #104372 failed
    #104835 failed

    PRs Untested:
    Multiple PRs across all platforms are pending validation

  5. IuliiaHerets commented on Oct 24, 2026

    @IuliiaHerets

    Regression progress completed in BS

    PRs Failing:
    #102933 failed
    #103359 faced with #104904
    #104019 faced on Web
    #104325 failed
    #104344 faced on Web with #104893
    #104372 failed
    #104835 failed

    PRs Untested:
    #101717 pending validation on iOS
    #102904 pending validation on Web, Android and iOS
    #102905 seems like an internal PR, asked
    #103703 PR was reverted, comment
    #103709 pending validation on iOS
    #103920 pending validation on Web
    #104189 pending validation on Web, Android and iOS
    #104311 asked about Distance flow
    #104592 pending validation on Web
    #104732 no QA steps, asked
    #104777 pending validation on Web, Android and iOS

  6. IuliiaHerets commented on Oct 26, 2026

    @IuliiaHerets

    Regression was completed

    PRs Failing:
    #101717 faced on iOS with #96298, repro on prod, checking off
    #102933 failed with #104946, but the offline steps have since been updated in comment. Can we check it off?
    #103359 faced with #104904
    #103625 faced with #99766, repro on prod, checking off
    #103840 failed with #105002
    #104019 faced on Web with #104956, repro on prod, checking off
    #104325 failed with #104962 and #104963
    #104344 faced on Web with #104893
    #104372 failed with #104964, repro on prod
    #104700 faced with #104960, repro on prod, checking off
    #104835 failed with #104961, repro on prod

    PRs Untested:
    #102905 seems like an internal PR, asked
    #103703 PR was reverted, comment
    #104311 Scan flow was passed, asked about Distance flow
    #104732 no QA steps, asked

    Critical TCs that are failing:
    Account Settings with #104966
    Onboarding with #98848
    Critical Viral Path with #101182

  7. Beamanator commented on Oct 26, 2026

    @Beamanator
    Contributor

    demoting #104894

  8. jasperhuangg commented on Oct 26, 2026

    @jasperhuangg
    Contributor
  9. Beamanator commented on Oct 26, 2026

    @Beamanator
    Contributor

    #104892 and #104908 fixed by #104898

  10. Beamanator commented on Oct 26, 2026

    @Beamanator
    Contributor

    #104891 fixed by #104895

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions