Budibase/budibase · error · HTTPError
Unsupported Project package format version
Error message
Unsupported Project package format version '${manifest.formatVersion}'. What it means
Project packages are versioned by manifest.formatVersion, which must exactly equal the server's PROJECT_EXPORT_FORMAT_VERSION constant. This 400 error is thrown when the version differs, protecting the importer from format changes it cannot safely parse. Both older and newer package formats are rejected.
Solutions
- Upgrade the server to match the formatVersion used by the exporting version.
- Re-export the project from a workspace running a compatible version.
- Check the exported formatVersion against the server's PROJECT_EXPORT_FORMAT_VERSION constant.
- If hand-authoring packages, set formatVersion to the exact constant value the server expects.
Example fix
// before
{ "artifactType": "project", "formatVersion": 99 }
// after (matching PROJECT_EXPORT_FORMAT_VERSION)
{ "artifactType": "project", "formatVersion": 1 } Defensive patterns
Strategy: validation
Validate before calling
if (manifest.formatVersion !== PROJECT_EXPORT_FORMAT_VERSION)
throw new Error(`Package formatVersion ${manifest.formatVersion} != supported ${PROJECT_EXPORT_FORMAT_VERSION}`) Try / catch
try {
await importProjectPackage(file)
} catch (err) {
if (err instanceof HTTPError && err.status === 400 && err.message.includes("format version")) {
// upgrade server or re-export from a compatible version
}
throw err
} Prevention
- Track PROJECT_EXPORT_FORMAT_VERSION changes between releases
- Re-export packages after server upgrades
- Pin import/export tooling to matching versions
When it happens
Trigger: Importing a package exported by a newer Budibase version with a bumped formatVersion; importing a very old export whose formatVersion predates the current constant; a package whose formatVersion field is missing or mis-typed.
Common situations: Server rollback then import of recent exports; packages generated by third-party tools guessing the version; partially deployed clusters where server versions differ.
Related errors
- Project import does not support resource type
- Project import could not remap datasource for query
- Project package contains an invalid doc in
- Project package contains too many docs.
- Project package contains unsupported doc files.
AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29).
Data as JSON: /api/errors/52f0c91c9fca8ad1.
Report an issue: GitHub.
Appendix: source
Thrown at packages/server/src/sdk/workspace/projects/backups/imports.ts:653
case ResourceType.SCREEN:
return generateScreenID()
default:
throw new HTTPError(
`Project import does not support resource type '${resourceType}'.`,
400
)
}
}
const validateManifest = (manifest: ProjectPackageManifest) => {
if (!isRecord(manifest)) {
throw new HTTPError("Project package manifest is invalid.", 400)
}
if (manifest.artifactType !== "project") {
throw new HTTPError("Supplied file is not a Project package.", 400)
}
if (manifest.formatVersion !== PROJECT_EXPORT_FORMAT_VERSION) {
throw new HTTPError(
`Unsupported Project package format version '${manifest.formatVersion}'.`,
400
)
}
if (
!isRecord(manifest.sourceWorkspace) ||
typeof manifest.sourceWorkspace.id !== "string" ||
!isRecord(manifest.resourcesByType) ||
!Array.isArray(manifest.unsupportedContent)
) {
throw new HTTPError("Project package manifest is invalid.", 400)
}
for (const count of Object.values(manifest.resourcesByType)) {
if (!Number.isInteger(count) || Number(count) < 0) {
throw new HTTPError("Project package manifest is invalid.", 400)
}
}
for (const unsupported of manifest.unsupportedContent) {View on GitHub (pinned to a81a902e9a)