config.KuitoConfig
What kuito.config.ts exports. The config itself is production.
Usage
Fail builds on a fallback
import type { KuitoConfig } from 'kuito/config';
export default {
name: 'MyApp',
ios: { bundleIdentifier: 'com.example.myapp' },
android: { applicationId: 'com.example.myapp' },
strict: true,
} satisfies KuitoConfig;Type declaration
export interface KuitoConfig extends Settings {
environments?: Record<string, Environment>;
/**
* The database's migrations, oldest first. Each applies once, in order, when
* the app first opens the database; append new ones and never edit one that
* shipped. Every environment shares them.
*/
migrations?: Migration[];
}Members 20
| Name | Type | Required | Description |
|---|---|---|---|
environments | Record<string, Environment> | No | — |
migrations | Migration[] | No | The database's migrations, oldest first. Each applies once, in order, when the app first opens the database; append new ones and never edit one that shipped. Every environment shares them. |
name | string | Yes | Shown under the app icon. |
version | string | No | What users see: up to three numbers, like 1.2.0. Defaults to 1.0.0. |
buildNumber | number | No | What the stores order builds by; raise it for every upload. Defaults to 1. |
icon | string | No | A square PNG of at least 1024×1024, relative to kuito.config.ts. |
orientation | Orientation | No | The orientations the app runs in. default follows the device. |
colorScheme | ColorScheme | No | light or dark ignores the system setting, as CSS's color-scheme. |
backgroundColor | string | No | The root window's color, behind the app, like #1E88E5. |
statusBar | { style?: StatusBarStyle; hidden?: boolean;} | No | The status bar at launch; SystemBars changes it at run time. |
urlSchemes | string[] | No | Schemes that open the app, like myapp for myapp://show/42 (docs/linking.md). |
linkDomains | string[] | No | Web domains whose https links open the app, like example.com: universal
links on iOS, verified app links on Android (docs/linking.md). |
ios | { bundleIdentifier: string; icon?: { light?: string; dark?: string; tinted?: string; }; supportsTablet?: boolean; requiresFullScreen?: boolean; deploymentTarget?: string; teamId?: string; associatedDomains?: string[]; pushEnvironment?: PushEnvironment; backgroundModes?: IOSBackgroundMode[]; infoPlist?: PlistDictionary; entitlements?: PlistDictionary;} | Yes | — |
android | { applicationId: string; adaptiveIcon?: { foreground?: string; background?: string; monochrome?: string; }; softInputMode?: SoftInputMode; minSdk?: number; signing?: { keystore?: string; keyAlias?: string; }; manifest?: AndroidManifestSettings; theme?: Record<string, string>;} | Yes | — |
permissions | KuitoPermissions | No | The permissions the app asks for (docs/permissions.md); none when absent. |
backgroundTasks | string[] | No | Names of the tasks the OS may run in the background (docs/background-tasks.md). An environment's list replaces this one. |
fonts | (string | KuitoFont)[] | No | .ttf and .otf files fontFamily takes (docs/fonts.md), relative to
kuito.config.ts. Each file's family, weight and style are read from it;
an object sets them instead. |
splash | KuitoSplash | No | The launch screen, and the view the app hands off from (docs/splash.md). |
updates | { url: string; publicKey: string;} | No | Over-the-air updates of a release build (docs/updates.md): where its shell looks for them, and the key their signatures are checked with. Absent, a release build takes none. |
strict | boolean | No | Code that reads or moves what lives on the UI thread but has to run on the JS thread fails the build, instead of showing in the placement report (docs/placement.md). Defaults to false. |
statusBar — nested fields
statusBar fields
| Name | Type | Required | Description |
|---|---|---|---|
style | StatusBarStyle | No | The color of its content: light for dark backgrounds. auto follows the color scheme. |
hidden | boolean | No | — |
ios — nested fields
ios fields
| Name | Type | Required | Description |
|---|---|---|---|
bundleIdentifier | string | Yes | — |
icon | { light?: string; dark?: string; tinted?: string;} | No | light replaces icon on iOS; dark and tinted are its iOS 18 appearances. |
supportsTablet | boolean | No | Runs on iPad too. Defaults to true. |
requiresFullScreen | boolean | No | Opts out of iPad multitasking (UIRequiresFullScreen). |
deploymentTarget | string | No | The oldest iOS the app runs on, 16.0 or later. |
teamId | string | No | The Apple Developer Team ID an iPhone build signs with, like
A1B2C3D4E5 (docs/cli.md#release-builds). Simulator builds need none. |
associatedDomains | string[] | No | Like applinks:example.com, for universal links. |
pushEnvironment | "development" | "production" | No | The APNs environment remote push uses: the aps-environment
entitlement (docs/notifications.md#remote-push). Absent, the app
receives no push. |
backgroundModes | ("location" | "audio" | "voip" | "fetch" | "remote-notification" | "processing" | "external-accessory" | "bluetooth-central" | "bluetooth-peripheral" | "nearby-interaction" | "push-to-talk")[] | No | — |
infoPlist | PlistDictionary | No | Merged into the generated Info.plist. |
entitlements | PlistDictionary | No | Merged into the generated entitlements. |
icon — nested fields
icon fields
| Name | Type | Required | Description |
|---|---|---|---|
light | string | No | — |
dark | string | No | — |
tinted | string | No | — |
android — nested fields
android fields
| Name | Type | Required | Description |
|---|---|---|---|
applicationId | string | Yes | — |
adaptiveIcon | { foreground?: string; background?: string; monochrome?: string;} | No | Layers of the 108dp adaptive icon; without one, icon fills its visible 72dp. |
softInputMode | SoftInputMode | No | What the window does for the keyboard. Defaults to resize (docs/apps.md). |
minSdk | number | No | The oldest Android API level the app runs on, 26 or later. |
signing | { keystore?: string; keyAlias?: string;} | No | The upload key a release build signs with (docs/cli.md#signing): a keystore relative to kuito.config.ts and its alias. Its passwords come from the environment only. |
manifest | AndroidManifestSettings | No | Additions to the generated AndroidManifest.xml, as data. |
theme | Record<string, string> | No | Items of the app's theme, AppTheme, by name. |
adaptiveIcon — nested fields
adaptiveIcon fields
| Name | Type | Required | Description |
|---|---|---|---|
foreground | string | No | — |
background | string | No | A color like #1E88E5, or an image. |
monochrome | string | No | The single-color layer of Android 13's themed icons. |
signing — nested fields
signing fields
| Name | Type | Required | Description |
|---|---|---|---|
keystore | string | No | — |
keyAlias | string | No | — |
updates — nested fields
updates fields
| Name | Type | Required | Description |
|---|---|---|---|
url | string | Yes | An https URL the output of kuito update build is uploaded to. |
publicKey | string | Yes | The public key kuito update key printed; its private half never goes here. |
Generated from the public TypeScript declarations: signatures, props and defaults come from the checked source, descriptions from its JSDoc. No defaults are invented.