RootModule
The application’s shared root components, data, and metadata.
Compatibility
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;links
links?: LinksFunction;meta
meta?: MetaFunction;shouldRevalidate
shouldRevalidate?: (args: RevalidationArgs) => boolean;