Introduction
What a Fluxta plugin is and what it can add to the app.
A plugin extends Fluxta with capabilities the app does not have on its own — connecting to OBS, reading a file, calling an HTTP API, or reacting to a chat message.
Plugins are written in TypeScript against
@fluxta/sdk, distributed as a
folder, and loaded by Fluxta at startup.
To see a plugin running before reading further, go to Your first plugin. It takes a few minutes.
What a plugin can add
Actions
Units of behaviour the user puts on a button or into an automation. When it fires, your code runs.
Editor UIs
A settings form for one placed Action, and a settings page for the plugin as a whole.
Events
Happenings your plugin announces — a chat message, a scene change — that start an automation.
Values for conditions
Facts an If/Else step can branch on, and live lists that fill a dropdown while the user is editing.
Everything a plugin offers is declared in its manifest.json. Fluxta reads
the manifest to populate its UI, and ignores anything the code registers that
the manifest did not declare.
The two halves
A plugin has two independent sides, and Fluxta runs each in its own environment.
The background process
A Node.js script — the manifest's main — that Fluxta starts and keeps
running alongside the app. It registers the plugin's Actions, handles their
triggers, holds connections to whatever the plugin integrates with, and reads
and writes plugin-wide settings.
The editors
An editor is a web page that Fluxta loads inside a sandboxed iframe. There are two kinds:
- An Action Editor is scoped to a single placed Action. It opens when the user edits the button that Action sits on, and it reads and saves that one placement's settings.
- A Plugin Editor is scoped to the whole plugin. It opens from the app's settings and holds plugin-wide configuration: an API token, a connection endpoint, a "test connection" button.
Both are optional. An Action with no editor has no settings form.
Build editors with @fluxta/sdk/ui: ready-made
React components — fields, rows, dialogs — that already look and behave like the
rest of the app, with no styling to write.
How they talk
The two halves are separate processes and share no memory. They communicate in two ways, both provided by the SDK:
- Settings, persisted by Fluxta and readable from both sides.
- Messages, arbitrary JSON sent back and forth live. The message format is yours to define — see Messaging.