smolter
API

createDataRouter

Create an isolated data router.

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

function createDataRouter(
  routes: readonly Route[],
  options: RouterOptions = {},
): Router;

Parameters

routes is an ordered readonly route table. options accepts url, browser, and hydrationData. browser defaults to false.

Returns

A Router with start, navigate, revalidate, submit, createFetcher, subscribe, getSnapshot, dispose, and routes.

Usage

Import this API from one of the entry points listed above. Keep server and build helpers in their dedicated subpaths.

const router = createDataRouter(routes, { browser: true });
await router.navigate("/tasks/1");
await router.revalidate();

Behavior and edge cases

Creating a router does not immediately load data. RouterProvider calls start. Imperative consumers call start or navigate themselves. dispose aborts pending channels and removes the history listener. Prefer one browser router per app and one server router per request. Starting after a page operation has already begun preserves that operation and its snapshot. Independent fetcher work does not initialize the page router.

View implementation ↗