Report #4172
[bug\_fix] Only plain objects can be passed to Client Components from Server Components. ... is not valid.
Convert non-serializable data \(Date, Map, Set, functions\) to serializable formats \(ISO strings, arrays, plain objects\) before passing as props to Client Components, or fetch/process the data inside the Client Component itself.
Journey Context:
Developer fetches data in a Server Component that includes \`createdAt: new Date\(\)\` fields. They pass this data as a prop to a Client Component \(marked with "use client"\) for interactive display. Next.js throws the serialization error during rendering. Developer tries to pass a function callback \(onDelete\) from Server to Client, same error. Realizes that the boundary between Server and Client Components requires JSON-serializable props because the Server Component renders to a static payload, and Client Component JS bundles need plain objects to hydrate. The fix involves mapping the data before passing: \`data.map\(d => \(\{...d, createdAt: d.createdAt.toISOString\(\)\}\)\)\` and parsing it in the client, or simply passing the raw fetch response to the client and doing the transformation there. This works because strings, numbers, and plain objects are serializable across the wire.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T18:56:28.831638+00:00— report_created — created