https://sonarly.com/issue/18991?type=bug
When SSE events deliver record data containing custom fields (e.g. mail, pitched, media, number, businessCategory on Company), `computeOptimisticRecordFromInput` throws a fatal error if the frontend's cached object metadata doesn't include those fields, breaking the entire SSE event processing stream.
Fix: **What changed:** In `computeOptimisticRecordFromInput.ts`, replaced `throw new Error(...)` with `console.warn(...)` when unknown fields are detected in the record input (line 73-79).
**Why:** The function's main for-loop (line 82+) iterates only over `objectMetadataItem.fields`, so unknown fields in `recordInput` are already naturally skipped and never processed. The `throw` was a defensive assertion added in commit `29745c67568` that assumed the caller always provides frontend-controlled input. However, when SSE real-time events were added, this function started receiving server-controlled input via `useTriggerOptimisticEffectFromSseUpdateEvents.ts`, which passes `event.properties.after` directly — including custom fields the user added that may not yet be in the frontend's stale metadata cache.
Converting to `console.warn` preserves observability while allowing graceful degradation. The known fields are still processed correctly.
**Test update:** Updated the existing test case from asserting a throw to asserting a `console.warn` call and verifying that known fields (like `city: 'Paris'`) are still correctly included in the output while unknown fields are skipped.