What problem does it solve? In SolidJS, JSX constructed outside a render (in event handlers, promises, or timeouts) creates computations with no owner that are never disposed, triggering the "computations created outside a createRoot or render will never be disposed" warning. This Skill defines the typing rule that prevents it. ## Core Features & Use Cases - Typing rule for deferred markup: Any prop whose markup is built outside a render β pushed onto a queue, held in a signal, or sent from a promise β must be typed () => JSX.Element, never JSX.Element. - Distinction from plain props: Markup passed parent to child stays JSX.Element, because the compiler wraps it in a getter evaluated inside the parent's render, which has an owner. - Use Case: A toast system where callers push toast.push({ art: () => <ItemSprite item={stack.item} size={24} label="" /> }) so the JSX is constructed under the card that draws it, with the holder rendering it via an explicit call like {props.toast.art?.()}. ## Quick Start When adding a prop or API that stores markup and draws it later, type it as a zero-argument function returning JSX.Element and have the holder call it where it renders.