Framework support
scrollsheet is SSR-safe by design, not by special-casing. The dialog only exists once JS runs on
the client: it’s gated behind a mount flag that starts false and flips in a useEffect, so the
server render and the first client render before hydration finishes produce identical markup, no
dialog, just your trigger.
Compatibility table
Section titled “Compatibility table”| Framework | Works out of the box | Notes |
|---|---|---|
| Next.js App Router | Yes, with 'use client' |
See the caveat below: the file that renders <Sheet.Root> needs the directive too, not just scrollsheet’s own. |
| Next.js Pages Router | Yes | No RSC boundary to worry about; "use client" is inert but harmless. |
| Remix / React Router v7 | Yes | Same SSR + hydration shape scrollsheet already handles. |
| Astro | Yes | See the caveat below. |
| Vite (SPA, no SSR) | Yes | renderToString never runs, so this is the simplest case. |