All skills
Skillintermediate
patterns children over render props
Use `children` for composition instead of `renderX` props. Children are more readable, compose naturally, and don't require understanding callback signatures.
Claude Code Knowledge Pack7/10/2026
Overview
Prefer Children Over Render Props
Use children for composition instead of renderX props. Children are more
readable, compose naturally, and don't require understanding callback
signatures.
Incorrect (render props):
function Composer({
renderHeader,
renderFooter,
renderActions,
}: {
renderHeader?: () => React.ReactNode
renderFooter?: () => React.ReactNode
renderActions?: () => React.ReactNode
}) {
return (
<form>
{renderHeader?.()}
{renderFooter ? renderFooter() : }
{renderActions?.()}
</form>
)
}
// Usage is awkward and inflexible
return (
}
renderFooter={() => (
<>
</>
)}
renderActions={() => }
/>
)
Correct (compound components with children):
function ComposerFrame({ children }: { children: React.ReactNode }) {
return <form>{children}</form>
}
function ComposerFooter({ children }: { children: React.ReactNode }) {
return <footer className='flex'>{children}</footer>
}
// Usage is flexible
return (
<Composer.Frame>
<Composer.Input />
<Composer.Footer>
<Composer.Formatting />
<Composer.Emojis />
</Composer.Footer>
</Composer.Frame>
)
When render props are appropriate:
// Render props work well when you need to pass data back
}
/>
Use render props when the parent needs to provide data or state to the child. Use children when composing static structure.