Reference

Entry points

How kitr/* imports map to packages, and the rules behind them.

Every kitr/* import maps to one @kitr/* package. The umbrella kitr package is a set of one-line re-exports plus the CLI binary; it has no code of its own.

The rules

  1. Re-export, never re-implement. kitr/router does export * from '@tanstack/react-router'. Nothing upstream is renamed, wrapped or hidden. If a TanStack doc page says import { Link } from '@tanstack/react-router', import { Link } from 'kitr/router' is the same thing.
  2. Add beside, never change. kitr's additions are new names (createKitrRouter, defineQuery, useUrlTableState). The one exception is documented in departures.md: kitr/forms exports its own Form and re-exports React Hook Form's as RhfForm.
  3. Providers are subpaths. kitr/query/provider, kitr/http/provider, kitr/theme/provider, kitr/auth/provider export a provider as default, so kitrrc.ts can lazy-import them without pulling the rest of the package into the boot path.
  4. Server entries never import React. kitr/server, kitr/api, kitr/logger, kitr/realtime/server, kitr/realtime/socket.io/server, kitr/realtime/sse/server, kitr/auth/server, kitr/db and kitr/testing are safe in a Node-only project. kitr/testing/react is where renderWithKitr lives.
  5. Platforms are packages. kitr/web, kitr/server, kitr/desktop and kitr/mobile each export a factory built with definePlatform from @kitr/core. The core knows the contract, never a platform.
  6. Optional peers. kitr lists every @kitr/* package as an optional peer. kitr add <name> installs the ones you use; importing an entry whose package is missing fails at build time with a clear module-not-found, not at runtime.

One exception you will hit

In route files, import createFileRoute, createLazyFileRoute and the root-route creators from @tanstack/react-router directly:

import { createFileRoute } from '@tanstack/react-router'
import { Link, Outlet } from 'kitr/router'

TanStack's route generator rewrites that specific import in every route file and only recognises @tanstack/react-router as its source. Everything else in the file comes from kitr/router. kitr doctor knows about this exception and does not flag it.

Reading the map

Entry Package React
kitr, kitr/app @kitr/core no
kitr/env @kitr/core no
kitr/react @kitr/react yes
kitr/router @kitr/router yes
kitr/query, kitr/query/provider @kitr/query yes
kitr/http, kitr/http/provider @kitr/http no (provider is framework-neutral)
kitr/forms @kitr/forms yes
kitr/table @kitr/table yes
kitr/state @kitr/state yes
kitr/tailwind, kitr/tailwind/vite, kitr/tailwind/preset.css @kitr/tailwind no
kitr/theme, kitr/theme/provider, kitr/theme/styles.css @kitr/theme yes
kitr/theme/server @kitr/theme no
kitr/logger @kitr/logger no
kitr/server, kitr/server/platform @kitr/server no
kitr/api, kitr/api/client @kitr/api no
kitr/actions @kitr/actions yes (TanStack Start)
kitr/seo @kitr/seo no
kitr/realtime, kitr/realtime/client, kitr/realtime/socket.io, kitr/realtime/sse @kitr/realtime no
kitr/realtime/server, kitr/realtime/socket.io/server, kitr/realtime/sse/server @kitr/realtime no
kitr/realtime/react @kitr/realtime yes
kitr/auth, kitr/auth/provider @kitr/auth hooks need React; createAuth does not
kitr/auth/server @kitr/auth no
kitr/db @kitr/db no
kitr/testing @kitr/testing no
kitr/testing/react @kitr/testing yes
kitr/mocks @kitr/mocks no
kitr/i18n, kitr/i18n/provider @kitr/i18n yes
kitr/analytics, kitr/analytics/provider @kitr/analytics no
kitr/analytics/react @kitr/analytics yes
kitr/monitoring, kitr/monitoring/provider, kitr/monitoring/server @kitr/monitoring no
kitr/platform, kitr/platform/provider @kitr/platform no
kitr/platform/react, kitr/platform/devtools @kitr/platform yes
kitr/offline, kitr/offline/provider @kitr/offline no
kitr/offline/react @kitr/offline yes
kitr/flags, kitr/flags/provider, kitr/flags/server @kitr/flags no
kitr/flags/react @kitr/flags yes
kitr/consent, kitr/consent/provider @kitr/consent no
kitr/consent/react @kitr/consent yes
kitr/secure-storage, kitr/secure-storage/provider @kitr/secure-storage no
kitr/secure-storage/react @kitr/secure-storage yes
kitr/files, kitr/files/provider @kitr/files no
kitr/files/react @kitr/files yes
kitr/notifications, kitr/notifications/provider @kitr/notifications no
kitr/notifications/react @kitr/notifications yes
kitr/native, kitr/native/provider @kitr/native no
kitr/native/react @kitr/native yes
kitr/updater, kitr/updater/provider @kitr/updater no
kitr/updater/react @kitr/updater yes
kitr/cache, kitr/cache/provider @kitr/cache no
kitr/shield, kitr/shield/provider @kitr/shield no
kitr/mail, kitr/mail/provider @kitr/mail templates are React elements; sending needs react-dom/server
kitr/jobs, kitr/jobs/provider @kitr/jobs no
kitr/uploads, kitr/uploads/server, kitr/uploads/provider @kitr/uploads no
kitr/uploads/react @kitr/uploads yes
kitr/storage, kitr/storage/provider, kitr/storage/server @kitr/storage no
kitr/storage/react @kitr/storage yes
kitr/devtools, kitr/devtools/provider @kitr/devtools no (kitr/devtools/ui is React)
kitr/web, kitr/web/vite @kitr/web no (CLI and build time)
kitr/web/client, kitr/web/provider @kitr/web hooks need React
kitr/desktop, kitr/desktop/electron-main, kitr/desktop/electron-preload @kitr/desktop no
kitr/desktop/client, kitr/desktop/tauri, kitr/desktop/electron, kitr/desktop/provider @kitr/desktop useTauriEvent needs React
kitr/mobile @kitr/mobile no (CLI)
kitr/mobile/client, kitr/mobile/provider @kitr/mobile no
kitr/vite @kitr/vite no (build time)