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 availableSettings 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 in the Stratos Settings page under your plugin’s section. 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

Managed by the VA admin platform and pushed to all pilots. Read-only in the client. The shell fetches airline-scoped values from the platform when the pilot authenticates. 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 from the Skyvex platform without rebuilding or redeploying the plugin.

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 VA admin on the Skyvex platform. 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.