You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Version Number: Web production build (e.g. 9.3.77-3 class; exact build TBD at repro) Reproducible in staging?: TBD Reproducible in production?: Yes (confirmed via internal logs + session replay; details not in this issue) If this was caught during regression testing, add the test name, ID and link from BrowserStack: Email or phone of affected tester (no customers): N/A — customer report, redacted Logs:https://stackoverflow.com/c/expensify/questions/4856 (internal VL query available to assignee) Expensify/Expensify Issue URL: Issue reported by: Internal investigation Slack conversation (hyperlinked to channel name):
Related (observability, not root fix):#91407, #91405
Action Performed
Go to Search and open an expense from the results (search money-request report view).
Open Description edit for a submit expense (RHP): route pattern edit/submit/description/:transactionID/:reportID.
Change the description text and tap Save.
App attempts to navigate back to the search expense view: route pattern search/view/:reportID.
Expected Result
Description saves successfully; user returns to the search expense view with the report UI intact.
Actual Result
Full-page GenericErrorPage (“Uh-oh, something went wrong!”) — top-level ErrorBoundary in App.tsx (errorMessage="NewExpensify crash caught by error boundary").
Workaround
Refresh the page (or sign out and back in). The description change may or may not have persisted.
Platforms
Select the officially supported platforms where the issue was reproduced:
Android: App
Android: mWeb Chrome
iOS: App
iOS: mWeb Safari
iOS: mWeb Chrome
Windows: Chrome
MacOS: Chrome / Safari
Screenshots/Videos
Add screenshots if available; no customer session links in this issue.
// ReportActionEditMessageContext.tsx (simplified)if(activeDraftEditResolution!==null){if(editingState===CONST.REPORT_ACTION_EDIT_MESSAGE_STATE.OFF){setEditingState(CONST.REPORT_ACTION_EDIT_MESSAGE_STATE.EDITING);// during render}syncComposerDraftFromPersistedOnyxDraft(...);// also setState during render}if(editingReportID==null&&editingState!==CONST.REPORT_ACTION_EDIT_MESSAGE_STATE.OFF){stopEditing();// setState during render}
After saving description and navigating back, Onyx draft / report-action updates may re-enter this path on every render → React #185 → error boundary.
Suggested fix direction: Move draft sync / setEditingState / stopEditing into useEffect (or derive state without setState-in-render), with stable dependencies on activeDraftEditResolution fields.
Contributor repro (no customer data needed)
Search → open any submit expense from search results.
Edit Description → change text → Save.
Confirm landing on search/view/:reportID without the generic error page.
If flaky: try with an active report-action draft / edit-message state, or repeat save immediately after opening the expense RHP.
Out of scope
invalid currency code in NumberFormat() on Search list — related symptom class but different stack (DataCells_TotalCell); native tracking in https://expensify.sentry.io/issues/APP-6MR does not include web boundary hits.
If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!
Version Number: Web production build (e.g.
9.3.77-3class; exact build TBD at repro)Reproducible in staging?: TBD
Reproducible in production?: Yes (confirmed via internal logs + session replay; details not in this issue)
If this was caught during regression testing, add the test name, ID and link from BrowserStack:
Email or phone of affected tester (no customers): N/A — customer report, redacted
Logs: https://stackoverflow.com/c/expensify/questions/4856 (internal VL query available to assignee)
Expensify/Expensify Issue URL:
Issue reported by: Internal investigation
Slack conversation (hyperlinked to channel name):
Related (observability, not root fix): #91407, #91405
Action Performed
edit/submit/description/:transactionID/:reportID.search/view/:reportID.Expected Result
Description saves successfully; user returns to the search expense view with the report UI intact.
Actual Result
Full-page GenericErrorPage (“Uh-oh, something went wrong!”) — top-level
ErrorBoundaryin App.tsx (errorMessage="NewExpensify crash caught by error boundary").Workaround
Refresh the page (or sign out and back in). The description change may or may not have persisted.
Platforms
Select the officially supported platforms where the issue was reproduced:
Screenshots/Videos
Add screenshots if available; no customer session links in this issue.
Technical details (for implementers)
Error
NewExpensify crash caught by error boundary - Minified React error #185; visit https://react.dev/errors/185 ...Log.alert). Do not rely on Sentry alone to validate this bug until that ships.Component stack (deepest → root, from production web bundle)
Abbreviated stack at time of crash:
Suspected root cause
Save → navigate back flow:
updateMoneyRequestDescription+Navigation.goBack(backTo)toward search view.Strong suspect: ReportActionEditMessageContextProvider performs
setStateduring render when bridging Onyx drafts:After saving description and navigating back, Onyx draft / report-action updates may re-enter this path on every render → React #185 → error boundary.
Suggested fix direction: Move draft sync /
setEditingState/stopEditingintouseEffect(or derive state without setState-in-render), with stable dependencies onactiveDraftEditResolutionfields.Contributor repro (no customer data needed)
search/view/:reportIDwithout the generic error page.Out of scope
invalid currency code in NumberFormat()on Search list — related symptom class but different stack (DataCells_TotalCell); native tracking in https://expensify.sentry.io/issues/APP-6MR does not include web boundary hits.View all open jobs on GitHub
Issue Owner
Current Issue Owner: @VickyStashUpwork Automation - Do Not Edit