System bars & deep links

Optional waid.config.json blocks that tune how your app sits on the screen and how it responds to links.

All three live under settings:

json
{
"name": "wildlife-journal",
"dist": "dist",
"settings": {
"orientation": "portrait",
"deeplink": { "scheme": "wildlife" }
}
}

These blocks used to sit at the top level of the file. They still parse there, but each prints a deprecation warning on every build. waid migrate-config moves them under settings for you.

systemBars: status & navigation bars (Android)#

Your app runs edge-to-edge and its content is inset into the safe area (like Flutter's SafeArea). Tune the bars with systemBars:

json
"systemBars": {
"mode": "edge-to-edge",
"appearance": "light",
"statusBarColor": "#0a1410"
}
KeyValuesWhat it does
modeedge-to-edge | overlay | immersiveedge-to-edge: bars as transparent overlays, content inset. overlay: content behind the status bar. immersive: bars hidden.
appearancelight | darkIcon contrast for both bars (light = light icons).
statusBarColor / navBarColor#RRGGBBBar background colors.
statusBarStyle / navBarStylelight | darkPer-bar icon-style override.

Register a custom URL scheme so links like myapp://open launch your app:

json
"deeplink": { "scheme": "wildlife", "host": "sighting" }
KeyWhat it is
schemeThe URL scheme (e.g. wildlife). Empty → no deeplink handler.
hostOptional host component. Empty matches any host for the scheme.

env: non-secret values#

Pass non-secret configuration into your app, readable at runtime via window.host.env:

json
{
"settings": { "env": { "llm.provider": "openai" } },
"permissions": { "host": { "env": true } }
}

The env block requires permissions.host.env: true or the build fails. Only put non-secret values here. Secrets belong in the runtime vault (window.host.vault).

This is for values baked into the package and identical everywhere. Values that change between local, staging and production belong in env files instead — see Modes and env files.