JS evaluates the createComponent(Sibling, {}) argument before ssr() runs, so Sibling consumes owner-child ID 1; the {props.children} closure is only invoked later inside ssr()'s template resolution and gets ID 2. The client compiles the same JSX to sequential insert() calls that execute in source order — children first — so it computes the opposite assignment, can't find the keys it expects,
https://stackblitz.com/edit/solidjs-templates-g2h7xwe5?file=src%2Froutes%2FHome.tsx
JS evaluates the createComponent(Sibling, {}) argument before ssr() runs, so Sibling consumes owner-child ID 1; the {props.children} closure is only invoked later inside ssr()'s template resolution and gets ID 2. The client compiles the same JSX to sequential insert() calls that execute in source order — children first — so it computes the opposite assignment, can't find the keys it expects,
https://stackblitz.com/edit/solidjs-templates-g2h7xwe5?file=src%2Froutes%2FHome.tsx