Props sent from a Server Component to a Client Component are serialised into the RSC payload. Write canCrossBoundary(value): true for anything that survives — strings, numbers, booleans, null, undefined, plain objects and arrays (recursively, of serialisable values), and Date, Map and Set instances. false for a plain function, unless it's marked as a Server Action (fn.isServerAction === true) — those cross as a callable reference. false for a class instance: an object whose prototype isn't Object.prototype.