Server Components
Most of the library needs no client boundary.
Server safe by default
A component only declares 'use client' when it genuinely needs state, effects or event handlers. Every component page in these docs shows which it is, and the badge is read from the actual directive in the source, not written by hand.
Why the build is unbundled
Bundlers strip or hoist directives when they merge modules, which would silently turn a client component into a server one. The library therefore compiles per file, so each emitted file keeps its own directive, and CI asserts on every build that they survive in both the ESM and CJS output.
Nothing touches the DOM at module scope
No window or document access outside an effect or handler, so the SSR pass cannot crash. Portal renders nothing until it has mounted, which is what makes overlays safe to import from a server file.
This documentation site is the proof: its landing page and most of these pages are Server Components rendering library components directly.