Files
twenty/packages
Sonarly Claude Code ac3c1d817c fix: gracefully handle unknown fields in SSE optimistic record updates
https://sonarly.com/issue/17644?type=bug

SSE subscription events include all database columns (including custom fields), but `computeOptimisticRecordFromInput` throws a fatal error when it encounters fields not present in the client's object metadata, breaking real-time updates for workspaces with custom fields.

Fix: **What changed:** In `computeOptimisticRecordFromInput.ts`, replaced the `throw new Error(...)` with `console.warn(...)` when unknown fields are detected in the record input (lines 73-77).

**Why:** The function validates that all fields in `recordInput` exist in `objectMetadataItem.fields`. This validation was originally written for mutation-triggered optimistic updates where the frontend controls the input shape. When SSE real-time events were added (via `useTriggerOptimisticEffectFromSseUpdateEvents`), this function started receiving server-controlled input that includes ALL database columns — including custom fields the workspace has added (e.g., Salesforce-migrated fields like `salesforceAccountId`, `fiscalYear`, `forecastCategory`).

The function's main for-loop (line 80) iterates only over `objectMetadataItem.fields`, so unknown fields in `recordInput` are already naturally skipped and never make it into the output. The throw was a defensive assertion that became incorrect when the caller contract expanded. Converting to `console.warn` preserves observability while allowing graceful degradation.

**Test update:** Updated the existing test from asserting a throw to asserting a `console.warn` call and verifying that known fields (like `city: 'Paris'`) are still correctly processed while unknown fields are skipped.
2026-03-23 18:14:30 +00:00
..
2026-03-17 11:43:17 +01:00
2026-03-23 16:56:15 +00:00