Fragments (<>...</>) are supported. They render children without a wrapper element.

<>
  <h1>Title</h1>
  <p>Description</p>
</>

#Transparent Fragments

A fragment that passes through children is treated as transparent — the compiler skips it and processes the children directly:

<>{children}</>
<>{props.children}</>

No extra hydration markers are generated for transparent fragments.

#Fragments and Hydration

Fragments don't produce a DOM node, so the compiler handles hydration differently from regular elements.

For conditional fragments, the compiler uses HTML comment markers as boundaries:

<!--bf-cond-start:slot_0-->
<h1>Title</h1>
<p>Description</p>
<!--bf-cond-end:slot_0-->

The client runtime uses these comment markers to locate and swap the fragment content when the condition changes.

For component roots that return a fragment, each direct child element is marked with bf-s so the runtime can find them during hydration.