Prerequisites
Before you start, make sure you have the following installed:- Node.js
>=18.0.0 - npm
>=9.0.0 - TypeScript (installed as a dev dependency in your plugin project)
Install the SDK
How the plugin lifecycle works
When FDO loads your plugin, it follows a fixed synchronous lifecycle:- Instantiation — FDO creates an instance of your plugin class. The
FDO_SDKconstructor runs, registers the plugin withPluginRegistry, and emits aninitevent to the host. init()— FDO callsinit()once. Use this method to set up initial state, register IPC handlers, and configure storage. Keepinit()fast — do not block here.render()— FDO callsrender()to get your plugin’s UI. Return a synchronous string. The SDK serializes this string and sends it to the FDO iframe host pipeline, which mounts it in the sandboxed iframe.renderOnLoad()(optional) — If you implementrenderOnLoad(), FDO serializes its return value and injects it as a script into the iframe after the UI mounts. Use this for post-mount setup that runs in the iframe context.
Required metadata fields
Every plugin must expose ametadata getter that returns a PluginMetadata object. All fields except id are required:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name shown in the FDO plugin list |
version | string | Yes | Semantic version string (e.g., "1.0.0") |
author | string | Yes | Plugin author name |
description | string | Yes | Short description of what the plugin does |
icon | string | Yes | BlueprintJS v6 icon name (see note below) |
id | string | No | Optional unique identifier; FDO assigns one if omitted |
The
icon field must be a valid BlueprintJS v6 icon name — for example, "cube", "cog", "dashboard", or "git-branch". FDO uses BlueprintJS v6 in the host application to render plugin icons. Passing an unrecognized name will result in a missing icon in the UI. You can validate icon names programmatically using the exported isBlueprintV6IconName helper:Next steps
Installation
Full installation reference, TypeScript config, and distribution notes
Plugin lifecycle
Deep dive into how FDO loads, runs, and manages plugins
UI rendering
Build rich UIs with DOM helpers and host-injected libraries
Operator plugins
Build Docker, Kubernetes, Terraform, and other operator panels