Remix
@themvora/remix
RemixSSRHydration5 exports
Remix owns the server/client boundary: loader SSR resolution, a blocking head script, and React hydration.
Verified with Themvora 2.0.0·Updated 2026-09-17
Prerequisites
Package Manager
npm, pnpm, yarn, or bun
Dependencies
@themvora/core (peer dependency)
Use Case
Remix projects with theme support
Installation
Install the integration — @themvora/core is pulled in automatically as a dependency.
pnpm add @themvora/remixQuick Start
Complete copy-paste usage for this package.
// app/root.tsx
import { useLoaderData } from "@remix-run/react";
import { ThemeProvider } from "@themvora/remix";
import { getInitialThemeState } from "@themvora/remix/server";
import { getBuiltInThemes } from "@themvora/core";
// getInitialThemeState takes the registry as a required option; the built-in
// set is a valid registry, so no theme file is needed.
const themes = getBuiltInThemes();
export async function loader({ request }) {
return { initial: await getInitialThemeState(request, { themes }) };
}
export default function App() {
const { initial } = useLoaderData<typeof loader>();
return (
<ThemeProvider initial={initial}>
<Outlet />
</ThemeProvider>
);
}API Reference
Curated highlights below. The complete generated reference — every signature, parameter and type — is at /api-reference/remix.
Server
| Export | Description |
|---|---|
Loader theming | getInitialThemeState from @themvora/remix/server reads the theme cookies off the request. |
Blocking script | ThemeHead emits the pre-paint bootstrap in the document <head>. |
createRemixThemePersistence / computeFingerprint | Persistence, plus the fingerprint shared from @themvora/core. |
Client
| Export | Description |
|---|---|
ThemeProvider | Hydrates against the loader-resolved initial state; full hook set + ThemeScope. |
Intentional React dependency | Depends on @themvora/core + @themvora/react directly. |