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.
| Framework | Works out of the box | Notes |
|---|---|---|
| Next.js App Router | Yes | "use client" is already on every file that needs it, including the dist chunk boundary. |
| 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. |