From cacee2585ba44c3392e7ee9cf9249e941ff30f8d Mon Sep 17 00:00:00 2001 From: Aditya Kumar Mishra <154746713+adityakrmishra@users.noreply.github.com> Date: Fri, 17 Apr 2026 23:38:25 +0530 Subject: [PATCH] fix(studio): await saveRow and surface foreign row errors to UI and Sentry (#44950) Fixes #44949 What kind of change does this PR introduce? [x] Bug fix (non-breaking change which fixes an issue) [ ] New feature (non-breaking change which adds functionality) Description This PR fixes a silent failure state in the Foreign Row Selector (SidePanelEditor.tsx). Previously, onSaveForeignRow called saveRow without awaiting it, and included an entirely empty catch block. This meant that any database write failures (RLS violations, network drops, foreign key constraint violations) were swallowed into the void. The user received no visual feedback that their save failed. Changes: Added await to saveRow to ensure the promise rejection is actually caught by the try/catch block. Added a toast.error notification to alert the user when the save fails. Added Sentry.captureException to ensure these silent failures are actually tracked in production observability. (Sentry was already imported in the file). ## Summary by CodeRabbit * **Bug Fixes** * Improved error handling and user notifications when saving data in the table editor, ensuring failures are properly communicated and logged. --- .../SidePanelEditor/SidePanelEditor.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.tsx index cffd091938c..1703e78a279 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.tsx @@ -361,8 +361,15 @@ export const SidePanelEditor = ({ const isNewRecord = false const configuration = { identifiers, rowIdx: row.idx } - saveRow(value, isNewRecord, configuration, () => {}) - } catch (error) {} + await saveRow(value, isNewRecord, configuration, (error) => { + if (error) { + toast.error(`Failed to save row: ${error?.message ?? 'Unknown error'}`) + } + }) + } catch (error: any) { + toast.error(`Failed to save row: ${error?.message ?? 'Unknown error'}`) + Sentry.captureException(error, { tags: { workflow: 'save-foreign-row' } }) + } } const saveColumn = async (