This guide walks you through creating a Stratos plugin from scratch — a React component that appears in the Stratos sidebar with live reload during development.Documentation Index
Fetch the complete documentation index at: https://docs.skyvexsoftware.com/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
- Node.js 20+
- pnpm (recommended)
- The Stratos app installed with
--devflag access
1. Scaffold your plugin
The fastest way to get started:2. Understand the key files
plugin.json
Every plugin needs a manifest. The scaffolder generates this for you:
id must be unique — lowercase alphanumeric and hyphens only. The type controls distribution: "airline" plugins are synced to all pilots by the VA; "user" plugins are installed individually.
vite.config.ts
createPluginConfig handles everything: externalising shared dependencies (React, TanStack Query, the SDK), ESM output format, asset copying, and dev server auto-connect. The vite option lets you add extra Vite config like Tailwind and React.
Keep
react() in the plugins array — it’s required for the dev server, not just a convenience. The SDK injects a Fast Refresh preamble that imports /@react-refresh, which is only served when @vitejs/plugin-react is registered.src/ui/index.tsx
Your plugin’s root component. Must be the default export:
/plugins/my-plugin and wraps it with providers that supply plugin context, error boundaries, and theme.
3. Develop with live reload
Start the Stratos app with the--dev flag, log in, and select your airline. Then in your plugin directory:
4. Bundle and deploy
When you’re ready to ship:dist/ into bundle.zip, and uploads it to Skyvex automatically if you have an API token set. The scaffolder already added this script to your package.json.
To enable automatic uploads, generate an API key from your account at skyvexsoftware.com and set it as an environment variable:
bundle.zip for manual upload through the website.
See Build & Deploy for CI/CD setup, release modes, and troubleshooting.
Adding a background module
If your plugin needs server-side functionality (Express routes, IPC handlers, database access), add a background module:- Create
src/background/index.ts:
- Update
vite.config.ts:
- Add
cross-envand update build scripts inpackage.json:
Tips
- Use
useSimDatawith aselectoption to pull only the fields you need — avoids unnecessary re-renders on every simulator tick - Background modules are optional — most plugins only need a UI
- Your plugin gets the same Tailwind setup as Stratos, so utility classes just work
- The SDK is a dev dependency — Stratos provides React, TanStack Query, and Socket.io at runtime so your bundle stays small
- Check the logs at Settings > Logs if something isn’t connecting
Next steps
- Architecture — how the shell loads and runs plugins
- Plugin Manifest — full
plugin.jsonreference - UI Module — hooks, styling, and context
- Background Module — running code in the main process
- Build & Deploy — bundling and distribution