## Demo: island-props
### ServerRenderedParent.svelte
```svelte
Runs only on the server. No ServerRenderedParent.svelte
mochi:hydrate directive, so this component ships zero JavaScript — its output is inert HTML. It builds a props bag covering every
type devalue supports and hands it off to the child below. The Server type column in the child is captured here, before serialization; the
Client type column is resolved after hydration. Matching values prove the round-trip preserved each type.
{`const dateVal = new Date('2025-01-15T12:00:00Z');
const mapVal = new Map([['a', 1], ['b', 2], ['c', 3]]);
const setVal = new Set([10, 20, 30]);
const bigintVal = 9007199254740993n;
const urlVal = new URL('https://mochi.dev/docs?version=5');
// ...
const cyclic: { name: string; self?: unknown } = { name: 'cyclic' };
cyclic.self = cyclic;
const cyclicRef = cyclic;`}
| Prop | Value | Server type | Client type |
|---|---|---|---|
{row.label} |
{display(row.value)} |
{serverTypes[row.label] ?? '—'} |
{isBrowser ? typeOf(row.value) : '—'} |
Repeated ref |
{repeatedRef[0] === repeatedRef[1] ? 'same ref' : 'different refs'} |
identity check |
{isBrowser ? 'identity check' : '—'} |
Cyclic ref |
{cyclicRef.self === cyclicRef ? 'self === obj' : 'broken'} |
identity check |
{isBrowser ? 'identity check' : '—'} |