Budibase/budibase · error
Latest release is not marked as Svelte 5 compatible
Error message
Latest release is not marked as Svelte 5 compatible
What it means
applyPluginUpdates downloads a plugin's latest release and extracts the Svelte major version from the downloaded metadata. Plugins must declare Svelte 5+ compatibility on this branch; if extractSvelteMajor returns a non-number or a value below 5, the update is rejected with this error.
Source
Thrown at packages/server/src/sdk/plugins/update.ts:309
continue
}
let directory: string | undefined
let cleanupDirectory: string | undefined
try {
const release = await fetchLatestRelease(plugin.origin.repo, token)
if (!release || !shouldUpgrade(plugin.version, release.version)) {
continue
}
const download = await githubUpload(plugin.origin.url, plugin.name, token)
directory = download.directory
cleanupDirectory = download.cleanupDirectory
const svelteMajor = extractSvelteMajor(download.metadata)
if (typeof svelteMajor !== "number" || svelteMajor < 5) {
throw new Error("Latest release is not marked as Svelte 5 compatible")
}
const originUpdate = {
...plugin.origin,
etag: release.etag ?? plugin.origin.etag,
latestKnownVersion: release.version,
lastCheckedAt: new Date().toISOString(),
}
const stored = await pro.plugins.storePlugin(
download.metadata,
directory,
PluginSource.GITHUB,
originUpdate
)
clientAppSocket?.emit("plugin-update", {
name: stored.name,View on GitHub (pinned to a81a902e9a)
Solutions
- Wait for/ask the maintainer to publish a release built with Svelte 5 and svelteMajor >= 5 metadata.
- Pin the plugin to its current (last-known-good) version so auto-update stops pulling the incompatible release.
- Skip/disable auto-update for this plugin origin until a compatible release exists.
- If you own the plugin repo, fix the build config to emit svelteMajor: 5 and cut a new release.
Example fix
// before (schema.json in new release)
{ "metadata": { "name": "x" } }
// after
{ "metadata": { "name": "x", "svelteMajor": 5 } } Defensive patterns
Strategy: try-catch
Validate before calling
const svelteMajor = extractSvelteMajor(download.metadata) if (typeof svelteMajor !== "number" || svelteMajor < 5) skipUpdate(plugin)
Type guard
const isSvelte5Compat = (m: unknown): m is { svelteMajor: number } => typeof m === "object" && m !== null && typeof (m as any).svelteMajor === "number" && (m as any).svelteMajor >= 5 Try / catch
try {
await applyPluginUpdates(plugin)
} catch (e) {
if (e.message.includes("Svelte 5")) {
// keep current version; record incompatibility and skip auto-update
} else {
throw e
}
} Prevention
- Pin plugin origins to known-compatible versions
- Only publish plugin releases built with Svelte 5 tooling
- Verify svelteMajor metadata in the packaged artifact before tagging
- Treat this error as 'stay on current version', not a hard failure
When it happens
Trigger: Automatic plugin update (checking plugin origins for newer releases) where the newly downloaded latest release's metadata lacks a svelteMajor field or declares svelteMajor < 5.
Common situations: A plugin maintainer published a new release built with the old Svelte 4 toolchain; the plugin's schema.json omitted svelteMajor; a repo regressed to an older build config between releases.
Related errors
- Only Svelte 5 plugins are supported on this branch
- 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
- Must have yarn or npm installed to run build.
AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29).
Data as JSON: /api/errors/d96c933318b48dcf.
Report an issue: GitHub.