Budibase/budibase · error
Only component plugins are supported outside of self-host
Error message
Only component plugins are supported outside of self-host
What it means
When processing an uploaded plugin, non-self-host (cloud) deployments only accept component-type plugins. processUploaded validates the plugin's schema type and throws this error if a non-component plugin (e.g. datasource, automation) is uploaded outside self-host.
Source
Thrown at packages/server/src/sdk/plugins/index.ts:134
plugin?.name,
err instanceof Error ? err.message : String(err)
)
}
}
if (updated > 0) {
console.log(`Backfilled GitHub origin for ${updated} plugin(s).`)
}
})
}
export async function processUploaded(plugin: KoaFile, source: PluginSource) {
const { metadata, directory, cleanupDirectory } = await fileUpload(plugin)
try {
pluginCore.validate(metadata.schema)
// Only allow components in cloud
if (!env.SELF_HOSTED && metadata.schema?.type !== PluginType.COMPONENT) {
throw new Error(
"Only component plugins are supported outside of self-host"
)
}
// Only allow Svelte 5 plugins on this branch
if (
metadata.schema?.metadata?.svelteMajor !== 5 &&
metadata.schema?.type === PluginType.COMPONENT
) {
throw new Error("Only Svelte 5 plugins are supported on this branch")
}
const doc = await pro.plugins.storePlugin(metadata, directory, source)
clientAppSocket?.emit("plugin-update", { name: doc.name, hash: doc.hash })
return doc
} finally {
deleteFolderFileSystem(cleanupDirectory)
}View on GitHub (pinned to a81a902e9a)
Solutions
- Host the plugin on a self-hosted Budibase installation instead of cloud.
- Change the plugin's schema type to COMPONENT if it is actually a component plugin.
- Check the plugin's schema.json / bundled metadata to confirm the declared type is correct.
- Verify env.SELF_HOSTED is set correctly for your deployment type.
Example fix
// before (schema.json)
{ "type": "datasource", ... }
// after
{ "type": "component", ... } Defensive patterns
Strategy: validation
Validate before calling
if (!env.SELF_HOSTED && plugin.metadata?.schema?.type !== "component") {
throw new Error("Upload non-component plugins only on self-host installs")
} Type guard
const isComponentPlugin = (m: PluginMetadata): boolean => m.schema?.type === PluginType.COMPONENT
Prevention
- Read the plugin's schema.json type before uploading
- Only test datasource/automation plugins on self-hosted instances
- Verify env.SELF_HOSTED matches your deployment target
- Keep separate plugin sets for cloud vs self-host
When it happens
Trigger: Uploading or watching a plugin whose metadata.schema.type is DATASOURCE, AUTOMATION-BLOCK, etc. while env.SELF_HOSTED is false - e.g. POST to the plugin upload endpoint or plugin file watch on a cloud install.
Common situations: A plugin developer tests a datasource plugin against a cloud-hosted Budibase instance; a self-host plugin bundle is uploaded to Budibase Cloud where only component plugins are licensed.
Related errors
- Plugin missing .js file.
- Stream to upload is invalid/undefined
- pnpm is required to run this project (pnpm-lock.yaml or pack
- npm is required to run this project (package-lock.json or pa
- yarn is required to run this project (yarn.lock or packageMa
AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29).
Data as JSON: /api/errors/72b438a715f89df8.
Report an issue: GitHub.