Budibase/budibase · error
Unknown plugin type - check schema.json: ${schema.type}
Error message
Unknown plugin type - check schema.json: ${schema.type} What it means
Plugin validation dispatches on schema.type (PLUGIN type enum: component, datasource, automation, etc.). When the plugin's schema.json declares a type the validator does not recognize, it falls through to the default case and throws with the offending type value. The thrown message includes schema.type for diagnosis.
Source
Thrown at packages/backend-core/src/plugin/utils.ts:174
.required(),
}),
})
runJoi(validator, schema)
}
export function validate(schema: any) {
switch (schema?.type) {
case PluginType.COMPONENT:
validateComponent(schema)
break
case PluginType.DATASOURCE:
validateDatasource(schema)
break
case PluginType.AUTOMATION:
validateAutomation(schema)
break
default:
throw new Error(`Unknown plugin type - check schema.json: ${schema.type}`)
}
}
View on GitHub (pinned to a81a902e9a)
Solutions
- Open the plugin's schema.json and verify the type field exactly matches a supported PluginType (e.g. "component", "datasource", "automation")
- Fix casing/typos in schema.json and re-zip/re-upload the plugin
- If the plugin targets a newer plugin SDK, upgrade Budibase to a version that supports that plugin type
- Validate the schema.json against the official plugin schema/template before packaging
Example fix
// before (schema.json)
{ "type": "Widget", "name": "my-plugin", ... }
// after
{ "type": "component", "name": "my-plugin", ... } Defensive patterns
Strategy: validation
Validate before calling
const schema = JSON.parse(fs.readFileSync("schema.json", "utf8"))
if (!schema.type || !["component", "datasource", "automation"].includes(schema.type)) {
throw new Error(`Unsupported plugin type: ${schema.type}`)
} Type guard
function isKnownPluginType(t: string): t is "component" | "datasource" | "automation" {
return ["component", "datasource", "automation"].includes(t)
} Try / catch
try {
await validate(schema)
} catch (err) {
if (err.message.startsWith("Unknown plugin type")) {
// fix schema.json type field and re-upload
}
throw err
} Prevention
- Validate plugin schema.json against the official template before packaging
- Keep the type field lowercase and matching the supported PluginType enum
- Check plugin compatibility with your Budibase version before installing
- Re-zip plugins after any schema.json edit
When it happens
Trigger: Uploading/registering a plugin whose schema.json has a missing, misspelled, or newer-than-supported type field (e.g. "type": "widget", a typo like "Componant", or a plugin built against a newer Budibase plugin SDK).
Common situations: Hand-written or third-party plugins with incorrect schema.json, plugins copied from newer Budibase versions into an older self-hosted install, or edits to schema.json that changed the type casing/spacing.
Related errors
- Junction table not specified for many-to-many relationship b
- Junction table '${relationship.junctionTable}' not found in
- Please run in a plugin directory - must contain package.json
- Please run in a plugin directory - must contain schema.json
- package.json is missing one of 'name', 'version' or 'descrip
AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29).
Data as JSON: /api/errors/f24bdad429e312d3.
Report an issue: GitHub.