smolter

smolter

Loaders. Actions. Less component clutter.

Data flow you can follow.

Keep requests out of deeply nested components. Loaders read data, actions change it, and your components render the result.

Typed data, forms without page reloads, and revalidation you control. For React and Preact, in the browser or on the server.

Get started →

Choose what you ship.

Import from @kasperrt/smolter/react or /preact. createRouter keeps navigation lean; createDataRouter adds loaders, actions and fetchers.

Your features. Your footprint.

Start with navigation. Add only what your app needs.

Framework

Combined browser bundle

4,124 bytes gzip
Brotli
3,683 B
Minified
11,069 B

Measured together, including shared code. Production Vite fixture; framework runtime and your app code excluded. Your build may differ.

Unchecked prefetch modes are removed by Smolter’s Vite plugin when usage is statically known. Dynamic spreads retain possible modes. Other features follow named-import tree shaking.

Optional /client handles browser transport or hydration; /document and /lazy-route add application features. /server and /vite belong in server and build code, not the browser.

Same measurement tools · gzip bytes
Selected APIReactPreact
smolter routing-only18251807
wouter routing subset28542211
React Router declarative routing subset12882React API
smolter common routing + data39363916
React Router data routing subset29780React API

Production ESM, esbuild + Terser, gzip level 9. Framework runtimes excluded; library dependencies included. Rows overlap and are not additive. API capabilities differ; React Router has no dedicated Preact entry.

Exports, versions & measurement method →