Skip to content

Releases: Expensify/App

9.4.21-2-staging

26 Jun 19:58
f19fa28

Choose a tag to compare

9.4.21-2-staging Pre-release
Pre-release

What's Changed

  • [No QA] Fix missing submitterLogin in ReportWorkflowTest by @roryabraham in #94630
  • fix: prevent "Something went wrong" screen flash on failed spend query by @nabi-ebrahimi in #93752
  • Fix report preview approval policy flow by @KJ21-ENG in #93876
  • [No QA] Update approval types and backup approver details by @Christinadobrzyn in #94350
  • [No QA] Cleanup unused CONST fields by @shubham1206agra in #93951
  • [NO QA] Reduce unsafe type assertions in tests via createMock (batch 2) by @blimpich in #94623
  • Allow negative response to be reprompted after 30 days by @hungvu193 in #94163
  • [No QA] Remove feature training modal dead code by @jmusial in #94599
  • Migrate useSearchSelector.base.ts from useOptionsList to usePersonalDetailOptions (part 5) by @hoangzinh in #94179
  • [Performance] Resolve destinationReportID before confirmation mount in global-create by @JakubKorytko in #94459
  • [Payment due @mkhutornyi] Fix thread RHP not closing when parent message deleted from search pages by @WojtekBoman in #94293
  • Enhance getChatRoomSubtitle function to accept conciergeReportID by @cretadn22 in #93547
  • Fix #admin room visibility in LHN for Track Workspace onboarding by @emkhalid in #94104
  • Migrate domain members list to the new Table component by @Krishna2323 in #94445
  • [Home Page] Remove Getting started slot from Home whenever all onboarding to-dos are complete by @adamgrzybowski in #94047
  • Add one-click copy button to code blocks in chat by @MelvinBot in #94337
  • [cp staging] Fix Expense defaults tab crash from unstable selectedKeys. by @Krishna2323 in #94695
  • [NO QA] Surface Travel provisioning errors on the terms screen instead of failing silently by @blimpich in #94074
  • [Onyx bump] Bump react-native-onyx from 3.0.85 to 3.0.86 by @elirangoshen in #94449
  • Open linked message at top - 2 by @VickyStash in #94671
  • Fix tax amount input overwriting in-progress edits in new manual expense flow by @MelvinBot in #94538
  • Fix Y axis labels being cut off when intermediate values are longer than min and max by @mhawryluk in #93817
  • Refactor: flash list dom order improvement for simple lists by @sharabai in #91605
  • [Payment due @daledah] Add receipt-type filter on the Search (Spend) page by @allgandalf in #94129
  • Update the policy expensify card table to the new style by @luacmartins in #93861
  • [No QA] Rename Travel Invoicing to Consolidated Travel Billing (NewDot copy + help docs) by @blimpich in #94626
  • Delay FreezeWrapper freezing while a modal is still open by @emkhalid in #94597
  • Remove code that explicitly pushed to MFA outcome screens by @chuckdries in #94103
  • Fix: preserve iouType for invoice/pay when reselecting a participant on confirm page by @MelvinBot in #94536
  • Fix: referral banner appears behind Android navigation bar in manual expense flow by @MelvinBot in #94539
  • [No QA] Treat existing release as success in deploy create-release retry loop by @blimpich in #94213

Full Changelog: 9.4.20-0-staging...9.4.21-2-staging

9.4.20-1

26 Jun 19:20
4f97e19

Choose a tag to compare

What's Changed

  • Hide Print secondary action for reports in the Open state by @wildan-m in #92885
  • Update the workspace members table to the new style by @JS00001 in #91746
  • Remap shortcuts for opening policy and report by @iwiznia in #94155
  • Fix: keep input focus by dismissing keyboard only when IOU type actually changes by @MelvinBot in #94412
  • [No QA] Create Find-Rooms-in-a-Workspace.md by @stephanieelliott in #93992
  • Guard DeepLinkHandler against stale post-sign-out initial URL by @MobileMage in #92839
  • Rename onboarding task copy from "Submit an expense" to "Create an expense" by @MelvinBot in #93961
  • feat: Integrate ExportDownloadStatusModal into report-level CSV export flow by @truph01 in #93796
  • Show complete Certinia bundle instructions by @ShridharGoel in #94414
  • [No QA] Fix flaky NewChatPage test by @MonilBhavsar in #94475
  • [Payment due @daledah] [No QA] Explicitly opt out from backups on iOS by @mateuuszzzzz in #93586
  • [Part 1] Onyx.connect removal for CurrencyUtils by @ShridharGoel in #83804
  • Remove Tags page header max width by @luacmartins in #94516
  • perf: Search S5 ExpenseFlatSearchView + primitives by @BartekObudzinski in #94426
  • fix: show contact names instead of phone numbers in imported contact lists by @aswin-s in #91395
  • [CP Staging] Fix independent tags not sorting by name by @luacmartins in #94509
  • [CP Staging] Revert #93402 - 83858 migrate money request part 3 v2 by @mjasikowski in #94555
  • Keep focus on distance field on error by @Gonals in #94566
  • [CP Staging] Revert "Add currency selector to Search footer total spend" by @mountiny in #94562
  • [Payment due @marufsharifi] Honor the selected bank account when paying an expense report from the report preview by @KioCoan in #93110
  • Show work-email warning before legal-name step for personal-email travel users by @MelvinBot in #94529
  • Fix: Video - Video is not playing in full screen, no controls, app is unresponsive by @annaweber830 in #82324
  • Remove Onyx.connect() for the RAM_ONLY_ARE_TRANSLATIONS_LOADING key part 1 by @daledah in #91996
  • Fix money request not found RHP fallback by @KJ21-ENG in #93875
  • fix: KYC flow doesn't trigger after adding bank account when paying another user by @samranahm in #92154
  • [No QA] Cancel ManualOpenSearchRouter telemetry span when the search router is closed by @jakubkalinski0 in #94472
  • Soft-log missing ViewState in addViewAt to fix Fabric mount crash by @lorretheboy in #94095
  • Replace getDisplayNameOrDefault with temporaryGetDisplayNameOrDefault by @cretadn22 in #94302
  • Prevent loading older chats while hidden history is shown by @VickyStash in #94444
  • Collapse in-flight reconnects by coverage to close the SequentialQueue dedup gap by @adhorodyski in #94210
  • Remove getLoginByAccountID usages from getSubmitReportManagerAccountID and prepareRejectMoneyRequestData by @bernhardoj in #92629
  • [No QA] Add web crash diagnostics to detect abnormal browser session exits by @sosek108 in #94201
  • [NO QA] Reduce unsafe type assertions in tests via createMock helper by @blimpich in #92979
  • Rework search input to be a keyword search only by @bernhardoj in #93543
  • Fix regressions from [Rules Revamp] Release 1 by @Krishna2323 in #94478
  • [Payment due @bernhardoj] Update Home announcements widget with June 2026 product update by @MelvinBot in #94502
  • Part 3: Refactor ConfirmModal usage to useConfirmModal in workspace accounting and general pages by @thelullabyy in #93633
  • [CP Staging] Fix tag selection mode on RHP by @luacmartins in #94600
  • [GPS] Add custom compass to GPSMapView by @GCyganek in #94284
  • [CBN] Refactor EnablePayments flow by @VickyStash in #92779
  • Show date change in system message when a distance date edit also changes the rate by @c3024 in #94556
  • Move from a boolean flag to a timestamp for ResendValidateCode gate by @chuckdries in #93301
  • [Payment due @brunovjk] Surface RuleBot in the Agent rules section by @yuwenmemon in #94131
  • Android & iOS - Expense - Description field is not visible when focused by @thelullabyy in #94398
  • Fix Spend tab flash when backing out of manual expense from Workspaces tab by @MelvinBot in #94515
  • Fix duplicate "This field is required" error on manual expense confirmation by @MelvinBot in #94513
  • Migrate InteractionManager - batch 3 part 3 by @mrejdak in #94040
  • fix: report unread by @annaweber830 in #91940
  • Block submitter self-approval Approve badge on Submit workspaces by @MelvinBot in #94553
  • [No QA] Move sentry size analysis upload to deploy step by @rinej in #94039

Full Changelog: 9.4.19-5...9.4.20-1

9.4.20-1-staging

26 Jun 16:18
4f97e19

Choose a tag to compare

9.4.20-1-staging Pre-release
Pre-release

9.4.20-0-staging

25 Jun 21:48
f306785

Choose a tag to compare

9.4.20-0-staging Pre-release
Pre-release

What's Changed

  • Hide Print secondary action for reports in the Open state by @wildan-m in #92885
  • Update the workspace members table to the new style by @JS00001 in #91746
  • Remap shortcuts for opening policy and report by @iwiznia in #94155
  • Fix: keep input focus by dismissing keyboard only when IOU type actually changes by @MelvinBot in #94412
  • [No QA] Create Find-Rooms-in-a-Workspace.md by @stephanieelliott in #93992
  • Guard DeepLinkHandler against stale post-sign-out initial URL by @MobileMage in #92839
  • Rename onboarding task copy from "Submit an expense" to "Create an expense" by @MelvinBot in #93961
  • feat: Integrate ExportDownloadStatusModal into report-level CSV export flow by @truph01 in #93796
  • Show complete Certinia bundle instructions by @ShridharGoel in #94414
  • [No QA] Fix flaky NewChatPage test by @MonilBhavsar in #94475
  • [Payment due @daledah] [No QA] Explicitly opt out from backups on iOS by @mateuuszzzzz in #93586
  • [Part 1] Onyx.connect removal for CurrencyUtils by @ShridharGoel in #83804
  • Remove Tags page header max width by @luacmartins in #94516
  • perf: Search S5 ExpenseFlatSearchView + primitives by @BartekObudzinski in #94426
  • fix: show contact names instead of phone numbers in imported contact lists by @aswin-s in #91395
  • [CP Staging] Fix independent tags not sorting by name by @luacmartins in #94509
  • [CP Staging] Revert #93402 - 83858 migrate money request part 3 v2 by @mjasikowski in #94555
  • Keep focus on distance field on error by @Gonals in #94566
  • [CP Staging] Revert "Add currency selector to Search footer total spend" by @mountiny in #94562
  • [Payment due @marufsharifi] Honor the selected bank account when paying an expense report from the report preview by @KioCoan in #93110
  • Show work-email warning before legal-name step for personal-email travel users by @MelvinBot in #94529
  • Fix: Video - Video is not playing in full screen, no controls, app is unresponsive by @annaweber830 in #82324
  • Remove Onyx.connect() for the RAM_ONLY_ARE_TRANSLATIONS_LOADING key part 1 by @daledah in #91996
  • Fix money request not found RHP fallback by @KJ21-ENG in #93875
  • fix: KYC flow doesn't trigger after adding bank account when paying another user by @samranahm in #92154
  • [No QA] Cancel ManualOpenSearchRouter telemetry span when the search router is closed by @jakubkalinski0 in #94472
  • Soft-log missing ViewState in addViewAt to fix Fabric mount crash by @lorretheboy in #94095
  • Replace getDisplayNameOrDefault with temporaryGetDisplayNameOrDefault by @cretadn22 in #94302
  • Prevent loading older chats while hidden history is shown by @VickyStash in #94444
  • Collapse in-flight reconnects by coverage to close the SequentialQueue dedup gap by @adhorodyski in #94210
  • Remove getLoginByAccountID usages from getSubmitReportManagerAccountID and prepareRejectMoneyRequestData by @bernhardoj in #92629
  • [No QA] Add web crash diagnostics to detect abnormal browser session exits by @sosek108 in #94201
  • [NO QA] Reduce unsafe type assertions in tests via createMock helper by @blimpich in #92979
  • Rework search input to be a keyword search only by @bernhardoj in #93543
  • Fix regressions from [Rules Revamp] Release 1 by @Krishna2323 in #94478
  • [Payment due @bernhardoj] Update Home announcements widget with June 2026 product update by @MelvinBot in #94502
  • Part 3: Refactor ConfirmModal usage to useConfirmModal in workspace accounting and general pages by @thelullabyy in #93633
  • [CP Staging] Fix tag selection mode on RHP by @luacmartins in #94600
  • [GPS] Add custom compass to GPSMapView by @GCyganek in #94284
  • [CBN] Refactor EnablePayments flow by @VickyStash in #92779
  • Show date change in system message when a distance date edit also changes the rate by @c3024 in #94556
  • Move from a boolean flag to a timestamp for ResendValidateCode gate by @chuckdries in #93301
  • [Payment due @brunovjk] Surface RuleBot in the Agent rules section by @yuwenmemon in #94131
  • Android & iOS - Expense - Description field is not visible when focused by @thelullabyy in #94398
  • Fix Spend tab flash when backing out of manual expense from Workspaces tab by @MelvinBot in #94515
  • Fix duplicate "This field is required" error on manual expense confirmation by @MelvinBot in #94513
  • Migrate InteractionManager - batch 3 part 3 by @mrejdak in #94040
  • fix: report unread by @annaweber830 in #91940
  • Block submitter self-approval Approve badge on Submit workspaces by @MelvinBot in #94553
  • Move sentry size analysis upload to deploy step by @rinej in #94039

Full Changelog: 9.4.19-1-staging...9.4.20-0-staging

9.4.19-5

25 Jun 21:28
030006c

Choose a tag to compare

What's Changed

  • [NO QA] Fix broken Sentry bundle-size links in deploy comments by @blimpich in #94381
  • [No QA] Revise upcoming features AgentZero reference doc by @stephanieelliott in #94388
  • [Certinia] R2 PSA: Import page (PSA branch) and CertiniaTagsMappingPage by @thelullabyy in #93899
  • [No QA] Split AgentZero upcoming-features roadmap into 8 focused category pages by @MelvinBot in #94403
  • [No QA] Docs updates for E/A#80449 invite new users in approval workflow by @MelvinBot in #93612
  • 83860 migrate workspace categories settings tags v5 by @huult in #93654
  • 83855 migrate ws confirmation misc by @huult in #93851
  • migrate SUBSCRIPTION_DOWNGRADE_BLOCKED by @huult in #93658
  • [NoQA] Restore render timer on performance tests by @LukasMod in #93573
  • Fix Concierge hidden-history hiding unread notification message on cold open by @MelvinBot in #93711
  • fix: prevent card admins from inviting company card assignees by @ShridharGoel in #94420
  • Unify expense column pickers via COLUMN_AVAILABILITY and align report details columns by @MelvinBot in #94124
  • 83858 migrate money request part 3 v2 by @huult in #93402
  • [No QA] Reorder unread indicator predicates to short-circuit cheaply by @TMisiukiewicz in #94424
  • Fix false "not here" page for reports not in the sidebar (ReportNotFoundGuard/ReportFetchHandler race) by @elirangoshen in #93415
  • [NOQA] perf: stabilized chatReport into MoneyRequestReportPreview by @OlimpiaZurek in #93950
  • Composition of WorkspacesListPage by @WojtekBoman in #93293
  • Update the policy taxes table to the new style by @luacmartins in #94208
  • [#91727] Add Load more pattern to Workspace Workflows approval list by @elirangoshen in #94052
  • [No QA] Skip loading unread indicator updater on Android by @TMisiukiewicz in #94428
  • Add accessibility labels and text for flip button in new manual expense flow by @thelullabyy in #94409
  • Fix O(n²) tag enabled-count in WorkspaceViewTagsPage by @TMisiukiewicz in #94307
  • Refactor useSelectionMode report actions to use dynamic verify account by @jmusial in #93715
  • [CP Staging] Revert "Open linked message at top" by @mountiny in #94470
  • Remove Onyx.connect() usage for ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS as allTransactionViolations from src/libs/actions/IOU/Transaction.ts by @Guccio163 in #91196
  • Allow enter for commuter exemptions by @Gonals in #94458
  • Recalculate mileage rate when editing distance expense date by @Krishna2323 in #93755
  • [Payment due @ahmedGaber93] Update MANAGE_TEAM onboarding: skip stale optimistic writes and navigate from API response by @marcochavezf in #91685
  • Update the policy tags table to the new style by @luacmartins in #93855
  • [Payment due @ahmedGaber93] Add currency selector to Search footer total spend by @c3024 in #90777
  • Fix unresponsive app after Home Recently added View all expenses by @MelvinBot in #94435
  • Gate Hold on receipt scan state to prevent unexpected hold error on scanning expenses by @MelvinBot in #94252
  • feat: add legal name step subheader, validate PMB addresses, and update address step subheader copy for VBBA by @samranahm in #92289
  • Part 9: Remove Onyx.connect() for the key: ONYXKEYS.PERSONAL_DETAILS_LIST by @DylanDylann in #94107
  • Display correct unit for commuter exclusions by @Gonals in #94457
  • Fix: clear chat iouReportID when deleting an expense report offline by @MelvinBot in #92265
  • Update Windows Emoji to Unicode Version 16.0 by @shubham1206agra in #94328
  • 🍒 Cherry pick PR #94600 to staging 🍒 by @os-botify[bot] in #94611

Full Changelog: 9.4.18-2...9.4.19-5

9.4.19-5-staging

25 Jun 19:41
030006c

Choose a tag to compare

9.4.19-5-staging Pre-release
Pre-release

What's Changed

  • 🍒 Cherry pick PR #94600 to staging 🍒 by @os-botify[bot] in #94611

Full Changelog: 9.4.19-4-staging...9.4.19-5-staging

9.4.19-4-staging

25 Jun 18:17
740b110

Choose a tag to compare

9.4.19-4-staging Pre-release
Pre-release

9.4.19-3-staging

25 Jun 13:41
0218ec7

Choose a tag to compare

9.4.19-3-staging Pre-release
Pre-release

9.4.19-1-staging

24 Jun 19:36
f0a610e

Choose a tag to compare

9.4.19-1-staging Pre-release
Pre-release

What's Changed

  • [NO QA] Fix broken Sentry bundle-size links in deploy comments by @blimpich in #94381
  • [No QA] Revise upcoming features AgentZero reference doc by @stephanieelliott in #94388
  • [Certinia] R2 PSA: Import page (PSA branch) and CertiniaTagsMappingPage by @thelullabyy in #93899
  • [No QA] Split AgentZero upcoming-features roadmap into 8 focused category pages by @MelvinBot in #94403
  • [No QA] Docs updates for E/A#80449 invite new users in approval workflow by @MelvinBot in #93612
  • 83860 migrate workspace categories settings tags v5 by @huult in #93654
  • 83855 migrate ws confirmation misc by @huult in #93851
  • migrate SUBSCRIPTION_DOWNGRADE_BLOCKED by @huult in #93658
  • [NoQA] Restore render timer on performance tests by @LukasMod in #93573
  • Fix Concierge hidden-history hiding unread notification message on cold open by @MelvinBot in #93711
  • fix: prevent card admins from inviting company card assignees by @ShridharGoel in #94420
  • Unify expense column pickers via COLUMN_AVAILABILITY and align report details columns by @MelvinBot in #94124
  • 83858 migrate money request part 3 v2 by @huult in #93402
  • [No QA] Reorder unread indicator predicates to short-circuit cheaply by @TMisiukiewicz in #94424
  • Fix false "not here" page for reports not in the sidebar (ReportNotFoundGuard/ReportFetchHandler race) by @elirangoshen in #93415
  • [NOQA] perf: stabilized chatReport into MoneyRequestReportPreview by @OlimpiaZurek in #93950
  • Composition of WorkspacesListPage by @WojtekBoman in #93293
  • Update the policy taxes table to the new style by @luacmartins in #94208
  • [#91727] Add Load more pattern to Workspace Workflows approval list by @elirangoshen in #94052
  • [No QA] Skip loading unread indicator updater on Android by @TMisiukiewicz in #94428
  • Add accessibility labels and text for flip button in new manual expense flow by @thelullabyy in #94409
  • Fix O(n²) tag enabled-count in WorkspaceViewTagsPage by @TMisiukiewicz in #94307
  • Refactor useSelectionMode report actions to use dynamic verify account by @jmusial in #93715
  • [CP Staging] Revert "Open linked message at top" by @mountiny in #94470
  • Remove Onyx.connect() usage for ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS as allTransactionViolations from src/libs/actions/IOU/Transaction.ts by @Guccio163 in #91196
  • Allow enter for commuter exemptions by @Gonals in #94458
  • Recalculate mileage rate when editing distance expense date by @Krishna2323 in #93755
  • [Payment due @ahmedGaber93] Update MANAGE_TEAM onboarding: skip stale optimistic writes and navigate from API response by @marcochavezf in #91685
  • Update the policy tags table to the new style by @luacmartins in #93855
  • [Payment due @ahmedGaber93] Add currency selector to Search footer total spend by @c3024 in #90777
  • Fix unresponsive app after Home Recently added View all expenses by @MelvinBot in #94435
  • Gate Hold on receipt scan state to prevent unexpected hold error on scanning expenses by @MelvinBot in #94252
  • feat: add legal name step subheader, validate PMB addresses, and update address step subheader copy for VBBA by @samranahm in #92289
  • Part 9: Remove Onyx.connect() for the key: ONYXKEYS.PERSONAL_DETAILS_LIST by @DylanDylann in #94107
  • Display correct unit for commuter exclusions by @Gonals in #94457
  • Fix: clear chat iouReportID when deleting an expense report offline by @MelvinBot in #92265
  • Update Windows Emoji to Unicode Version 16.0 by @shubham1206agra in #94328

Full Changelog: 9.4.18-0-staging...9.4.19-1-staging

9.4.18-2

24 Jun 19:13
e396a9d

Choose a tag to compare

What's Changed

  • Add Certinia company selector by @ShridharGoel in #93407
  • [NO QA] Filter UPDATE_REQUIRED from Sentry error reporting by @rlinoz in #94203
  • [No QA] Add tax tracking articles by @stephanieelliott in #94138
  • [No QA] Avoid building archived reports ID set in canEditFieldOfMoneyRequest chain by @TMisiukiewicz in #94185
  • [NoQA] Remove unused OPEN_AND_SUBMITTED_REPORTS_BY_POLICY_ID derived value by @LukasMod in #94276
  • refactor prepareOnboardingOnyxData function to always use hasCompletedGuidedSetupFlow as false in failureData by @daledah in #93790
  • [Payment due @eh2077] Update Home Announcements widget with MCP press release by @MelvinBot in #93114
  • Update delete workspace error message when frozen expensify cards are present by @jnowakow in #92917
  • Scroll the workspace list to the top after creating the first workspace by @wildan-m in #93200
  • [CP staging] Revert "feat: remove isNewManualExpenseFlowEnabled beta flag" by @puneetlath in #94312
  • Reset text-align in RenderHTML baseStyle and remove dInlineFlex from comment anchors by @MelvinBot in #93625
  • Remove all optional connectWithoutView from SplitExpenses and refactor initSplitExpense by @ZhenjaHorbach in #93040
  • [No QA] Avoid building archived reports ID set in room/task selector pages by @TMisiukiewicz in #94283
  • [Payment due @brunovjk] Show Explain button on receipt scan failed system messages by @Beamanator in #93532
  • [No QA] perf: Search S4 useSearchSnapshot data layer by @BartekObudzinski in #93805
  • feat: add one-click Google merchant search for card expenses by @samranahm in #93739
  • Remove @mention in ad-hoc build GH comment by @arosiclair in #94336
  • Fix - Blocked DEW Report Approval Briefly Shows “Approved” State Before Reverting by @FitseTLT in #94204
  • [CP Staging] Fix - Android - Expense - Extra space in Change workspace modal, not scrollable in landscape by @jmusial in #94298
  • Fix tab navigation not switching after expense submit on cold-start by @sumo-slonik in #92187
  • [No QA] Remove unused test drive modal code by @jmusial in #94322
  • Android & iOS - Agents - "Create agents to handle your workflow.." sentence is missing by @lorretheboy in #94006
  • Add Certinia PSA advanced settings by @ShridharGoel in #93946
  • Open linked message at top by @VickyStash in #93403
  • [Payment due @brunovjk] Allow several date formats for CSV company cards by @Gonals in #91933
  • [No QA] Do a sparse checkout for the validate mobile expensify submodule workflow by @iwiznia in #94196
  • [No QA] Fix iOS complete_hybrid_rollout crash by passing APPLE_ID env by @blimpich in #94243
  • [CP Staging] Revert: Submit button with manager email prompt by @hungvu193 in #94333
  • Remove legacy .woff format font files by @shubham1206agra in #94354
  • fix: unable to move per diem to a new report after changing workspace by @daledah in #91030
  • fix: Reports - Highlight animation is visible on added expense after duplication by @TaduJR in #89585
  • Refactor: remove deprecatedAllTransactions in getTransactionReportName by @linhvovan29546 in #94137
  • Revert "fix: Reports - Highlight animation is visible on added expense after duplication" by @blimpich in #94367
  • [No QA] Revise Concierge AI capabilities and examples by @stephanieelliott in #94140

Full Changelog: 9.4.17-3...9.4.18-2