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

  1. Open the plugin's schema.json and verify the type field exactly matches a supported PluginType (e.g. "component", "datasource", "automation")
  2. Fix casing/typos in schema.json and re-zip/re-upload the plugin
  3. If the plugin targets a newer plugin SDK, upgrade Budibase to a version that supports that plugin type
  4. 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

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


AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29). Data as JSON: /api/errors/f24bdad429e312d3. Report an issue: GitHub.