smolter
Types

RootModule

The application’s shared root components, data, and metadata.

Compatibility

ReactAvailable in this renderer's browser integration.
React SSRAvailable to this renderer's SSR integration; browser event handlers run after hydration.
PreactAvailable in this renderer's browser integration.
Preact SSRAvailable to this renderer's SSR integration; browser event handlers run after hydration.

Import from @kasperrt/smolter/react @kasperrt/smolter/preact

Signature

interface RootModule {
  /** Route identity used by targeted revalidation. Defaults to root. */
  id?: string;
  /** Optional registered route URL used to revalidate root data after mutations. */
  loaderPath?: string;
  ErrorBoundary?: ComponentType;
  default: ComponentType;
  Layout: ComponentType<{ children: ReactNode }>;
  loader?: (args: LoaderFunctionArgs) => unknown;
  links?: LinksFunction;
  meta?: MetaFunction;
  shouldRevalidate?: (args: RevalidationArgs) => boolean;
}

Contract

Provides default and Layout components, with optional loader, ErrorBoundary, links, meta, shouldRevalidate, id, and loaderPath. id defaults to root for registered root revalidation. loaderPath is an optional application-chosen URL for fetching root data again.

import type { RootModule } from "@kasperrt/smolter/preact";

import Root from "./root/route";
import { Layout } from "./root/layout";
import { loader } from "./root/loader";

export const root: RootModule = {
  default: Root,
  Layout,
  loader,
};

Usage and limits

The example defines a server root module. Do not import server-only loader dependencies into a browser entry; use the file-router integration or provide a browser-safe module separately. Root data is distinct from the active route’s loader data.

Fields

id

id?: string;

Route identity used by targeted revalidation. Defaults to root.

loaderPath

loaderPath?: string;

Optional registered route URL used to revalidate root data after mutations.

ErrorBoundary

ErrorBoundary?: ComponentType;

default

default: ComponentType;

Layout

Layout: ComponentType<{ children: ReactNode }>;

loader

loader?: (args: LoaderFunctionArgs) => unknown;

meta

meta?: MetaFunction;

shouldRevalidate

shouldRevalidate?: (args: RevalidationArgs) => boolean;
View implementation ↗