Platforms

Pick the platform, not the framework.

A platform is where your app runs. Start with one and add the rest later with a single command: they all share your code, your packages and the CLI. This page helps you choose.

What are you building?

Side by side

What each platform runs on, what it needs on your machine and what a build gives you.

PlatformRuns onYou also installSaved items live inkitr build gives you
WebVite + TanStack StartStatic, SPA, SSR, PWANothing elselocalStoragedist/site/client, plus dist/site/server/server.js in ssr mode
Serverh3Node, Bun, Deno, WorkersNothing else. Bun, Deno or Wrangler if you pick that runtimeNowhere: items read their defaults. Use a database or cachea bundled server in dist/api
DesktopElectronWindows, macOS, LinuxNothing elsekitr-storage.json in the app data folderelectron-vite builds main, preload and the app
TauriRust + system webviewWindows, macOS, LinuxThe Rust toolchainkitr.json, through the Tauri store plugintauri build: a native bundle per OS
MobileCapacitoriOS, AndroidXcode for iOS, Android Studio for AndroidCapacitor Preferences, kept when the OS clears the webviewthe web build synced into ios/ and android/

Mix them in one project

Platforms are named entries in kitrrc.ts, so one project can hold several. These are the usual mixes.

A site with its own API

Pages and the API in one project and one set of types. The API mounts inside the site or runs as its own process.

kitr new my-app --kit fullstackBuild a full-stack app →

One app on every screen

The same routes and components build a web app, an iPhone and Android app and a desktop app.

kitr add mobile phonekitr add desktop appShip one app everywhere →

An API and nothing else

No React in the dependency graph: an h3 server with routes, a database, logs and tests.

kitr new my-api --kit serverBuild an API server without React →

Which packages run where

9 of 38 packages run on every platform. On desktop and phones, the marked ones switch to native APIs underneath with no change to your code.

All packages →

Built for this platform Built for or native on this platformWorks here Works hereNot here Not available

PackageWebServerDesktopTauriMobile
Data fetching
httpWorks hereNot hereWorks hereWorks hereWorks here
offlineWorks hereNot hereWorks hereWorks hereWorks here
queryWorks hereNot hereWorks hereWorks hereWorks here
App state
flagsWorks hereWorks hereWorks hereWorks hereWorks here
stateWorks hereNot hereWorks hereWorks hereWorks here
Backend
actionsWorks hereNot hereNot hereNot hereNot here
apiWorks hereBuilt for this platformWorks hereWorks hereWorks here
cacheNot hereBuilt for this platformNot hereNot hereNot here
dbNot hereBuilt for this platformNot hereNot hereNot here
jobsNot hereBuilt for this platformNot hereNot hereNot here
mailNot hereBuilt for this platformNot hereNot hereNot here
shieldNot hereBuilt for this platformNot hereNot hereNot here
uploadsWorks hereBuilt for this platformWorks hereWorks hereWorks here
Real-time
realtimeWorks hereWorks hereWorks hereWorks hereWorks here
Interface
3dWorks hereNot hereWorks hereWorks hereWorks here
animationWorks hereNot hereWorks hereWorks hereWorks here
i18nWorks hereNot hereWorks hereWorks hereWorks here
tableWorks hereNot hereWorks hereWorks hereWorks here
tailwindWorks hereNot hereWorks hereWorks hereWorks here
themeWorks hereNot hereWorks hereWorks hereWorks here
toastWorks hereNot hereWorks hereWorks hereWorks here
Forms
formsWorks hereNot hereWorks hereWorks hereWorks here
Auth
authWorks hereWorks hereWorks hereWorks hereWorks here
Pages & routing
routerWorks hereNot hereWorks hereWorks hereWorks here
seoBuilt for this platformNot hereNot hereNot hereNot here
Device features
filesWorks hereNot hereWorks hereWorks hereWorks here
nativeWorks hereNot hereWorks hereWorks hereWorks here
notificationsWorks hereNot hereWorks hereWorks hereWorks here
platformWorks hereNot hereBuilt for this platformBuilt for this platformBuilt for this platform
secure-storageWorks hereNot hereWorks hereWorks hereWorks here
storageWorks hereWorks hereBuilt for this platformBuilt for this platformBuilt for this platform
Analytics & errors
analyticsWorks hereNot hereWorks hereWorks hereWorks here
consentWorks hereNot hereWorks hereWorks hereWorks here
monitoringWorks hereWorks hereWorks hereWorks hereWorks here
Developer tools
devtoolsWorks hereNot hereWorks hereWorks hereWorks here
loggerWorks hereWorks hereWorks hereWorks hereWorks here
mocksWorks hereNot hereWorks hereWorks hereWorks here
testingWorks hereWorks hereWorks hereWorks hereWorks here

Need something else, like a kiosk or a browser extension? A platform is a package with a definePlatform() factory, so you can write your own. Write a platform →