Platforms

Pick the platform, not the framework.

Where your app runs is a platform. Each one is a package you add with one command, and they all share the same app/ folder, the same packages and the same CLI.

Every platform at a glance

PlatformTargetsBuilt withAdd it
WebStatic, SPA, SSR, PWAVite + TanStack Startkitr add web site --mode ssr
ServerNode, Bun, Deno, Workersh3kitr add server api --runtime node
DesktopComing soonWindows, macOS, LinuxElectronkitr add desktop app
TauriComing soonWindows, macOS, LinuxRust + system webviewkitr add tauri app
MobileComing sooniOS, AndroidCapacitorkitr add mobile phone

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 →

Mix and match

One app. As many platforms as you need.

A platform is one named line in kitrrc.ts. Add one with a single command, keep several of the same type, and run them all with kitr dev. They share your app/ folder, your data contracts and your packages.

Platforms in this project

Electron or Tauri: a project keeps one desktop shell.

// kitrrc.ts
import { defineKitrConfig } from 'kitr/app'
import { server } from 'kitr/server'
import { web } from 'kitr/web'

export default defineKitrConfig({
  platforms: {
    site: web({ mode: 'ssr' }),
    api: server({ runtime: 'node' }),
  },
})
$ kitr add web site --mode ssr
$ kitr add server api
$ kitr dev
✓ site http://localhost:3000
✓ api http://localhost:3001