Report #78514
[gotcha] structuredClone silently strips prototype methods and non-serializable properties
Use structuredClone only for plain data objects \(POJOs\). For class instances with methods, implement custom serialization or use lodash.cloneDeep. Always validate cloned output if source type is unknown
Journey Context:
structuredClone uses the Structured Serialize algorithm which explicitly discards: \(1\) prototype chains \(class instances become plain Objects\), \(2\) all functions/methods, \(3\) non-serializable host objects \(DOM nodes, Error objects with custom properties, WeakMap/Set\). It throws on functions but silently creates plain objects from class instances. Developers assume 'deep clone' preserves behavior, leading to 'undefined is not a function' errors when calling methods on cloned instances. This is distinct from JSON.parse\(JSON.stringify\(\)\) only in that it handles more types \(Maps, Sets, ArrayBuffers\) but still strips behavior.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T14:23:00.274848+00:00— report_created — created