Skip to main content
Settings allow your plugin to be configured by pilots (user-scoped) or by the VA admin platform (airline-scoped). They’re declared in plugin.json and the shell renders a settings UI for pilots automatically: no settings page required in your plugin.

Declaring Settings

Add an available_settings array to your plugin.json:

Setting Types

For list and radio types, options is an array of { value: string; label: string } objects.

Setting Scopes

"user" scope

Appears on your plugin’s page in Stratos Settings → Plugins. Each pilot can configure their own value independently. Use user-scoped settings for:
  • Unit system preferences (imperial vs metric)
  • Display toggles (show/hide sections)
  • Notification preferences
  • Refresh intervals

"airline" scope

Set by the airline on skyvexsoftware.com and pushed to all pilots. Not shown to pilots in Stratos. Stratos fetches the values when the pilot signs in and picks up the airline’s changes while it’s running, holding them until the flight ends if one is in progress (see Reacting to airline changes). Use airline-scoped settings for:
  • Welcome messages and branding
  • Quick links and resources
  • Event detection rules
  • Route configurations
  • Any content the VA wants to control centrally
Airline-scoped settings can be updated on skyvexsoftware.com without rebuilding or redeploying the plugin. The airline sets them on your plugin’s Settings tab in Console. Each setting gets one row, drawn to match its type:
Fuel Policy's Settings tab in Console, built from the airline-scoped settings in its plugin.jsonFuel Policy's Settings tab in Console, built from the airline-scoped settings in its plugin.json

Reading Settings in the UI

Use usePluginContext() to access settings from any component:
Or with the useShellConfig() hook directly:
UI config access is synchronous: values are available immediately on render.
Note: config.get() in the UI context reads airline-scoped settings only: those managed by the airline on skyvexsoftware.com. User-scoped settings (personal preferences like unit system, display toggles, and refresh intervals) are managed through the shell’s settings UI and are not accessible via this API.

Reading Settings in a Background Module

Background config access uses ctx.config and is async:

Always Provide Defaults

Your plugin should work out of the box without any settings configured. The second argument to config.get is the fallback value returned when the setting has not been set:
Never assume a setting has a value: always pass a sensible default.